view Side-By-Side changes
Internet Engineering Task Force SIP WG
Internet Draft Jonathan Rosenberg
dynamicsoft
Henning Schulzrinne
Columbia U.
Gonzalo Camarillo
Ericsson
Alan Johnston
Worldcom
Jon Peterson
Neustar
Robert Sparks
dynamicsoft
Mark Handley
ACIRI
Eve Schooler
AT&T
draft-ietf-sip-rfc2543bis-05.txt
October 26, 2001
draft-ietf-sip-rfc2543bis-06.txt
January 28, 2002
Expires: April July 2002
SIP: Session Initiation Protocol
STATUS OF THIS MEMO
This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress".
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt
To view the list Internet-Draft Shadow Directories, see
http://www.ietf.org/shadow.html.
Abstract
The Session Initiation Protocol (SIP) is an application-layer control
(signaling) protocol for creating, modifying and terminating sessions
with one or more participants. These sessions include Internet
telephone calls, multimedia distribution and multimedia conferences.
SIP invitations used to create sessions carry session descriptions
which allow participants to agree on a set of compatible media types.
SIP makes use of elements called proxy servers to help route requests
to the users current location, assist in firewall traversal, authenticate and authorize users for
services, implement provider call routing policies, and provide
features to users. SIP also provides a registration function that
allows them to upload their current location for use by proxy
servers. SIP runs ontop of several different transport protocols.
1 Introduction
Various Authors [Page 1] a]
Internet Draft SIP October 26, 2001
There are many applications of the Internet that require the creation
and management of a session, where a session is considered an
exchange of data between an association of participants. The
implementation of these services is complicated by the practices of
participants; users may move between endpoints, they may be
addressable by multiple names, and they may communicate in several
different media - sometimes simultaneously. Numerous protocols have
been authored that carry various forms of real-time multimedia
session data such as voice, video, or text messages. SIP works in
concert with these protocols by enabling Internet endpoints (called
"user agents") to discover one another and to agree on a
characterization of a session they would like to share. For locating
prospective session participants, SIP relies on an infrastructure of
network hosts (called "proxy servers") to which user agents can send
registrations, invitations to sessions and other requests. SIP is an
agile, general-purpose tool for creating, modifying and terminating
sessions that works independently of underlying transport protocols
and without dependency on the type January 28, 2002
Table of session that is being
established. Contents
1 Introduction ........................................ 2
2 Overview of SIP Functionality
The Session Initiation Protocol (SIP) is an application-layer control
protocol that can establish, modify and terminate multimedia sessions
(conferences) such as Internet telephony calls. SIP can also invite
participants to already existing sessions. A SIP entity issuing an
invitation for an already existing session does not necessarily have
to be a member ....................... 2
3 Terminology ......................................... 3
4 Overview of Operation ............................... 4
5 Structure of the session to which it is inviting. Media can be
added to (and removed from) an existing session. Protocol ........................... 11
6 Definitions ......................................... 13
7 SIP transparently
supports name mapping and redirection services, which supports
personal mobility [1] - users can maintain a single externally
visible identifier (SIP URI) regardless of their network location. Messages ........................................ 19
7.1 Requests ............................................ 20
7.2 Responses ........................................... 20
7.3 Header Fields ....................................... 21
7.3.1 Header Field Format ................................. 22
7.3.2 Header Field Classification ......................... 24
7.3.3 Compact Form ........................................ 25
7.4 Bodies .............................................. 25
7.4.1 Message Body Type ................................... 25
7.4.2 Message Body Length ................................. 25
7.5 Framing SIP supports five facets of establishing and terminating multimedia
communications: messages ................................ 26
8 General User location: determination of Agent Behavior ......................... 26
8.1 UAC Behavior ........................................ 27
8.1.1 Generating the end system to be used for
communication;
User availability: determination of Request .............................. 27
8.1.1.1 Request-URI ......................................... 27
8.1.1.2 To .................................................. 27
8.1.1.3 From ................................................ 28
8.1.1.4 Call-ID ............................................. 29
8.1.1.5 CSeq ................................................ 30
8.1.1.6 Max-Forwards ........................................ 30
8.1.1.7 Via ................................................. 31
8.1.1.8 Contact ............................................. 31
8.1.1.9 Supported and Require ............................... 32
8.1.1.10 Additional Message Components ....................... 32
8.1.2 Sending the willingness of Request ................................. 33
8.1.3 Loose Routing Policies .............................. 33
8.1.3.1 Modifying the
called party to engage in communications;
User capabilities: determination of Route header field .................... 33
8.1.3.2 Modifying the media and media
parameters to be used;
Session setup: "ringing", establishment of session parameters at
both called and calling party;
Various Authors [Page 2]
Internet Draft SIP October 26, 2001
Session handling: including transfer and termination of
sessions, modifying session parameters, and invoking
services.
SIP is not a vertically integrated communications system. Request-URI ........................... 34
8.1.3.3 Destination Choice .................................. 34
8.1.3.4 Loop Avoidance ...................................... 34
8.1.4 Processing Responses ................................ 35
8.1.4.1 Transaction Layer Errors ............................ 35
8.1.4.2 Unrecognized Responses .............................. 35
8.1.4.3 Vias ................................................ 36
8.1.4.4 Processing Reliable 1xx Responses ................... 36
Various Authors [Page b]
Internet Draft SIP is
rather a component of the overall IETF multimedia data and control
architecture which incorporates protocols such as RSVP (RFC 2205 [2])
for reserving network resources, the real-time transport protocol
(RTP) (RFC 1889 [3]) for transporting real-time data January 28, 2002
8.1.4.5 Processing 3xx responses ............................ 36
8.1.4.6 Processing 4xx responses ............................ 38
8.2 UAS Behavior ........................................ 39
8.2.1 Method Inspection ................................... 39
8.2.2 Header Inspection ................................... 39
8.2.2.1 To and providing
QOS feedback, Request-URI .................................. 39
8.2.2.2 Merged Requests ..................................... 40
8.2.2.3 Require ............................................. 40
8.2.3 Content Processing .................................. 41
8.2.4 Applying Extensions ................................. 42
8.2.5 Processing the real-time streaming protocol (RTSP) (RFC 2326 [4])
for controlling delivery of streaming media, Request .............................. 42
8.2.6 Generating the session announcement
protocol (SAP) [5] for advertising multimedia sessions via multicast Response ............................. 42
8.2.6.1 Sending a Provisional Response ...................... 42
8.2.6.2 Headers and Tags .................................... 43
8.2.7 Stateless UAS Behavior .............................. 43
8.3 Redirect Servers .................................... 44
9 Canceling a Request ................................. 45
9.1 Client Behavior ..................................... 46
9.2 Server Behavior ..................................... 47
10 Registrations ....................................... 48
10.1 Overview ............................................ 48
10.2 Constructing the session description protocol (SDP) (RFC 2327 [6]) for
describing multimedia sessions. Therefore, SIP should be used in
conjunction with other protocols in order to provide complete
services to the users. However, REGISTER Request ................... 49
10.2.1 Adding Bindings ..................................... 52
10.2.1.1 Setting the basic functionality and operation
of SIP does not depend on any Expiration Interval of these protocols.
SIP does not provide services. SIP rather provides primitives that
can be used to implement different services. For example, SIP can
locate Contact
Addresses ...................................................... 52
10.2.1.2 Preferences among Contact Addresses ................. 53
10.2.2 Removing Bindings ................................... 53
10.2.3 Fetching Bindings ................................... 53
10.2.4 Refreshing Bindings ................................. 53
10.2.5 Setting the Internal Clock .......................... 54
10.2.6 Discovering a user and deliver an opaque object to his current location.
If this primitive is used to deliver Registrar ............................. 54
10.2.7 Transmitting a session description written in
SDP, Request .............................. 55
10.2.8 Error Responses ..................................... 55
10.3 Processing REGISTER Requests ........................ 55
11 Querying for instance, the parameters Capabilities ........................... 58
11.1 Construction of OPTIONS Request ..................... 59
11.2 Processing of OPTIONS Request ....................... 59
12 Dialogs ............................................. 61
12.1 Creation of a session can be agreed between
endpoints. If the same primitive is used to deliver Dialog ................................ 62
12.1.1 UAS behavior ........................................ 62
12.1.2 UAC behavior ........................................ 63
12.2 Requests within a photo of Dialog ............................ 64
12.2.1 UAC Behavior ........................................ 65
12.2.1.1 Generating the
caller as well as Request .............................. 65
12.2.1.2 Processing the session description, a "caller ID" service can
be easily implemented. As this example shows, Responses ............................ 66
12.2.2 UAS behavior ........................................ 67
12.3 Termination of a single primitive is
typically used to provide several different services. Consequently,
generality is more important than efficiency when designing SIP
primitives.
SIP does not offer conference control services such as floor control
or voting and does not prescribe how Dialog ............................. 69
13 Initiating a conference is to be managed,
but Session ................................ 69
Various Authors [Page c]
Internet Draft SIP can be used to initiate a session that uses some other
conference control protocol. SIP does not allocate multicast
addresses and does not reserve network resources.
3 Terminology
In this document, the key words "MUST", "MUST NOT", "REQUIRED",
"SHALL", "SHALLNOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
and "OPTIONAL" are to be interpreted as described in RFC 2119 [7] and
indicate requirement levels for compliant SIP implementations.
4 January 28, 2002
13.1 Overview of Operation
This section will introduce ............................................ 69
13.2 Caller Processing ................................... 70
13.2.1 Creating the basic operations Initial INVITE ......................... 70
13.2.2 Processing INVITE Responses ......................... 72
13.2.2.1 1xx responses ....................................... 72
13.2.2.2 3xx responses ....................................... 72
13.2.2.3 4xx, 5xx and 6xx responses .......................... 72
13.2.2.4 2xx responses ....................................... 73
13.3 Callee Processing ................................... 74
13.3.1 Processing of the SIP protocol
using simple examples. Note that this section INVITE ............................ 74
13.3.1.1 Progress ............................................ 75
13.3.1.2 The INVITE is tutorial in nature
and does not contain any normative statements.
Various Authors [Page 3]
Internet Draft SIP October 26, 2001 redirected ............................ 75
13.3.1.3 The first example will show the basic functions of SIP: location of INVITE is rejected .............................. 76
13.3.1.4 The INVITE is accepted .............................. 76
14 Modifying an end point, signaling a desire to communicate, negotiation of
session parameters to establish the session, and teardown of the
session once established.
Figure 1 shows Existing Session ....................... 77
14.1 UAC Behavior ........................................ 77
14.2 UAS Behavior ........................................ 79
15 Terminating a typical example of Session ............................... 80
15.1 Terminating a SIP message exchange between
two users, Alice and Bob. (Each message is labeled Dialog with the letter
"F" and a number for reference by the text.) In this example, Alice
uses a SIP application on her PC (referred to as BYE Request ............. 81
15.1.1 UAC Behavior ........................................ 81
15.1.2 UAS Behavior ........................................ 82
16 Proxy Behavior ...................................... 82
16.1 Overview ............................................ 82
16.2 Stateful Proxy ...................................... 83
16.3 Request Validation .................................. 84
16.4 Making a softphone) to call
Bob on his SIP phone over the Internet. Also shown are two SIP proxy
servers which act on behalf Routing Decision ........................... 87
16.5 Request Processing .................................. 90
16.6 Response Processing ................................. 97
16.7 Processing Timer C .................................. 105
16.8 Handling Transport Errors ........................... 105
16.9 CANCEL Processing ................................... 105
16.10 Stateless Proxy ..................................... 106
16.11 Record-Route Example ................................ 108
17 Transactions ........................................ 109
17.1 Client Transaction .................................. 111
17.1.1 INVITE Client Transaction ........................... 112
17.1.1.1 Overview of INVITE Transaction ...................... 112
17.1.1.2 Formal Description .................................. 113
17.1.1.3 Construction of Alice and Bob to facilitate the
session establishment. This typical arrangement is often referred to
as the "SIP trapezoid" as shown by the geometric shape ACK Request ..................... 116
17.1.2 non-INVITE Client Transaction ....................... 117
17.1.2.1 Overview of the dashed
lines in Figure 1.
Alice "calls" Bob using his non-INVITE Transaction .............. 117
17.1.2.2 Formal Description .................................. 117
17.1.3 Matching Responses to Client Transactions ........... 118
17.1.4 Handling Transport Errors ........................... 120
17.2 Server Transaction .................................. 120
17.2.1 INVITE Server Transaction ........................... 120
17.2.2 non-INVITE Server Transaction ....................... 123
17.2.3 Matching Requests to Server Transactions ............ 124
Various Authors [Page d]
Internet Draft SIP identity, a type January 28, 2002
17.2.4 Handling Transport Errors ........................... 126
17.3 RTT Estimation ...................................... 126
18 Reliability of Uniform Resource
Identifier (URI) called a SIP URI and defined in Section 21.1. It has
a similar form to an email address, typically containing a username
and a host name. In this case it is sip:bob@biloxi.com, where
biloxi.com is the domain Provisional Responses ................ 127
18.1 UAS Behavior ........................................ 128
18.2 UAC Behavior ........................................ 130
19 Transport ........................................... 131
19.1 Clients ............................................. 132
19.1.1 Sending Requests .................................... 132
19.1.2 Receiving Responses ................................. 134
19.2 Servers ............................................. 134
19.2.1 Receiving Requests .................................. 134
19.2.2 Sending Responses ................................... 135
19.3 Framing ............................................. 136
19.4 Error Handling ...................................... 136
20 Usage of Bob's SIP service provider (which can be
an enterprise, retail provider, etc). Alice also has a HTTP Authentication ........................ 137
20.1 Framework ........................................... 137
20.2 User-to-User Authentication ......................... 139
20.3 Proxy to User Authentication ........................ 141
20.4 The Digest Authentication Scheme .................... 143
20.4.1 HTTP Digest ......................................... 143
21 S/MIME .............................................. 145
21.1 S/MIME Certificates ................................. 145
21.2 S/MIME Key Exchange ................................. 146
21.3 Securing MIME bodies ................................ 148
21.4 Tunneling SIP URI of
sip:alice@atlanta.com. Alice might have typed in Bob's URI or perhaps
clicked on MIME ............................... 149
21.4.1 Tunneling Integrity and Authentication .............. 149
21.4.2 Tunneling Encryption ................................ 151
22 Security Considerations ............................. 152
22.1 Threat Models ....................................... 153
22.1.1 Registration Hijacking .............................. 153
22.1.2 Impersonating a hyperlink or an entry in an address book.
SIP is based on an HTTP-like request/response transacton model. Each
transaction consists Server .............................. 154
22.1.3 Tampering with Message Bodies ....................... 154
22.1.4 Tearing Down Sessions ............................... 155
22.1.5 Denial of a request that invokes a particular "Method",
or function, on the server, Service and at least one response. In this
example, the transaction begins with Alice's softphone sending an
INVITE request addressed to Bob's SIP URI. INVITE is an example Amplification ................. 156
22.2 Security Mechanisms ................................. 156
22.2.1 Transport and Network Layer Security ................ 157
22.2.2 HTTP Authentication ................................. 158
22.2.3 S/MIME .............................................. 158
22.3 Implementing Security Mechanisms .................... 159
22.3.1 Requirements for Implementers of a SIP method which specifies the action that the requestor (Alice)
wants the server (Bob) to take. The INVITE request contains a number
of header fields. Header fields are additional named attributes which
provide additional information about a message. The ones present in
an INVITE include a unique identifier for the call, the destination
address, Alice's address, ................ 159
22.3.2 Security Solutions .................................. 160
22.3.2.1 Registration ........................................ 160
22.3.2.2 Requests and information about the type of session
that Alice wishes Transitive Trust ....................... 161
22.3.2.3 Peer to establish with Bob. The INVITE (message F1 in
Figure 1) might look like this:
INVITE sip:bob@biloxi.com SIP/2.0
Via: SIP/2.0/UDP 10.1.3.3:5060
To: Bob <sip:bob@biloxi.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710@10.1.3.3
CSeq: 314159 INVITE
Contact: <sip:alice@10.1.3.3>
Content-Type: application/sdp Peer Requests ............................... 163
22.3.2.4 DoS Protection ...................................... 164
22.4 Limitations ......................................... 165
22.4.1 HTTP Digest ......................................... 165
22.4.2 S/MIME .............................................. 166
Various Authors [Page 4] e]
Internet Draft SIP October 26, 2001
atlanta.com . . . biloxi.com
. proxy proxy .
. .
Alice's . . . . . . . . . . . . . . . . . . . . Bob's
softphone January 28, 2002
22.4.3 TLS ................................................. 167
22.5 Privacy ............................................. 167
23 Common Message Components ........................... 168
23.1 SIP Phone
| | | |
| INVITE F1 | | |
|--------------->| INVITE F3 | |
| 100 Trying F2 |--------------->| INVITE F5 |
|<---------------| 100 Trying F4 |--------------->|
| |<-------------- | 180 Ringing F6 |
| | 180 Ringing F7 |<---------------|
| 180 Ringing F8 |<---------------| 200 OK F9 |
|<---------------| 200 OK F10 |<---------------|
| 200 OK F11 |<---------------| |
|<---------------| | |
| ACK F12 |
|------------------------------------------------->|
| Media Session |
|<================================================>|
| BYE F13 |
|<-------------------------------------------------|
| 200 OK F14 |
|------------------------------------------------->|
| |
Figure 1: Uniform Resource Indicators ..................... 168
23.1.1 SIP session setup example with URI Components .................................. 168
23.1.2 Character Escaping Requirements ..................... 172
23.1.3 Example SIP trapezoid
Contact-Length: 142
(Alice's SDP not shown)
The first line of the text-encoded message contains the method name
(INVITE). The lines which follow are a list of header fields. This
example contains URIs .................................... 172
23.1.4 SIP URI Comparison .................................. 173
23.1.5 Forming Requests from a minimum required set. The headers are briefly
described below:
Via contains the IP address (10.1.3.3), port number (5060), SIP URI ..................... 175
23.1.6 Relating SIP URIs and
transport protocol (UDP) on which Alice is expecting to receive
responses to this request. tel URLs ...................... 176
23.2 Option Tags ......................................... 178
23.3 Tags ................................................ 179
24 Header Fields ....................................... 179
24.1 Accept .............................................. 181
24.2 Accept-Encoding ..................................... 181
24.3 Accept-Language ..................................... 184
24.4 Alert-Info .......................................... 184
24.5 Allow ............................................... 184
24.6 Authentication-Info ................................. 185
24.7 Authorization ....................................... 185
24.8 Call-ID ............................................. 186
24.9 Call-Info ........................................... 186
24.10 Contact ............................................. 186
24.11 Content-Disposition ................................. 187
24.12 Content-Encoding .................................... 188
24.13 Content-Language .................................... 189
24.14 Content-Length ...................................... 189
24.15 Content-Type ........................................ 189
24.16 CSeq ................................................ 190
24.17 Date ................................................ 190
24.18 Error-Info .......................................... 191
24.19 Expires ............................................. 191
24.20 From ................................................ 191
24.21 In-Reply-To ......................................... 192
24.22 Max-Forwards ........................................ 192
24.23 Min-Expires ......................................... 193
24.24 MIME-Version ........................................ 193
24.25 Organization ........................................ 193
24.26 Priority ............................................ 194
24.27 Proxy-Authenticate .................................. 194
24.28 Proxy-Authorization ................................. 195
24.29 Proxy-Require ....................................... 195
24.30 RAck ................................................ 195
24.31 Record-Route ........................................ 196
24.32 Reply-To ............................................ 196
24.33 Require ............................................. 196
24.34 Retry-After ......................................... 197
24.35 Route ............................................... 197
Various Authors [Page 5] f]
Internet Draft SIP October 26, 2001 January 28, 2002
24.36 RSeq ................................................ 198
24.37 Server .............................................. 198
24.38 Subject ............................................. 198
24.39 Supported ........................................... 199
24.40 Timestamp ........................................... 199
24.41 To contains a display name (Bob) and a SIP URI (sip:bob@biloxi.com)
that the request was originally directed towards.
From also contains a display name (Alice) and a SIP URI
(sip:alice@atlanta.com) that indicate the originator of the request.
This header field also has a tag parameter which contains a
pseudorandom string (1928301774) which was added to the .................................................. 199
24.42 Unsupported ......................................... 200
24.43 User-Agent .......................................... 200
24.44 Via ................................................. 200
24.45 Warning ............................................. 201
24.46 WWW-Authenticate .................................... 203
25 Response Codes ...................................... 203
25.1 Provisional 1xx ..................................... 204
25.1.1 100 Trying .......................................... 204
25.1.2 180 Ringing ......................................... 204
25.1.3 181 Call Is Being Forwarded ......................... 204
25.1.4 182 Queued .......................................... 204
25.1.5 183 Session Progress ................................ 204
25.2 Successful 2xx ...................................... 205
25.2.1 200 OK .............................................. 205
25.3 Redirection 3xx ..................................... 205
25.3.1 300 Multiple Choices ................................ 205
25.3.2 301 Moved Permanently ............................... 205
25.3.3 302 Moved Temporarily ............................... 206
25.3.4 305 Use Proxy ....................................... 206
25.3.5 380 Alternative Service ............................. 206
25.4 Request Failure 4xx ................................. 206
25.4.1 400 Bad Request ..................................... 206
25.4.2 401 Unauthorized .................................... 207
25.4.3 402 Payment Required ................................ 207
25.4.4 403 Forbidden ....................................... 207
25.4.5 404 Not Found ....................................... 207
25.4.6 405 Method Not Allowed .............................. 207
25.4.7 406 Not Acceptable .................................. 207
25.4.8 407 Proxy Authentication Required ................... 207
25.4.9 408 Request Timeout ................................. 208
25.4.10 410 Gone ............................................ 208
25.4.11 413 Request Entity Too Large ........................ 208
25.4.12 414 Request-URI Too Long ............................ 208
25.4.13 415 Unsupported Media Type .......................... 208
25.4.14 416 Unsupported URI by the
softphone. It is used for identification purposes.
Call-ID contains a globally unique identifier for this call,
generated by the combination of a pseudorandom string and the
softphone's IP address. The combination of the To, From, and Call-ID
completely define a peer-to-peer Scheme .......................... 208
25.4.15 420 Bad Extension ................................... 208
25.4.16 421 Extension Required .............................. 209
25.4.17 423 Registration Too Brief .......................... 209
25.4.18 480 Temporarily Unavailable ......................... 209
25.4.19 481 Call/Transaction Does Not Exist ................. 209
25.4.20 482 Loop Detected ................................... 210
25.4.21 483 Too Many Hops ................................... 210
Various Authors [Page g]
Internet Draft SIP relationship betwee Alice and
Bob, and is referred to as a "dialog".
CSeq or Command Sequence contains an integer and a method name. The
CSeq number is incremented January 28, 2002
25.4.22 484 Address Incomplete .............................. 210
25.4.23 485 Ambiguous ....................................... 210
25.4.24 486 Busy Here ....................................... 211
25.4.25 487 Request Terminated .............................. 211
25.4.26 488 Not Acceptable Here ............................. 211
25.4.27 491 Request Pending ................................. 211
25.4.28 493 Undecipherable .................................. 211
25.5 Server Failure 5xx .................................. 211
25.5.1 500 Server Internal Error ........................... 211
25.5.2 501 Not Implemented ................................. 212
25.5.3 502 Bad Gateway ..................................... 212
25.5.4 503 Service Unavailable ............................. 212
25.5.5 504 Server Time-out ................................. 212
25.5.6 505 Version Not Supported ........................... 212
25.5.7 513 Message Too Large ............................... 213
25.6 Global Failures 6xx ................................. 213
25.6.1 600 Busy Everywhere ................................. 213
25.6.2 603 Decline ......................................... 213
25.6.3 604 Does Not Exist Anywhere ......................... 213
25.6.4 606 Not Acceptable .................................. 213
26 Examples ............................................ 214
26.1 Registration ........................................ 214
26.2 Session Setup ....................................... 215
27 Augmented BNF for each new request, the SIP Protocol ................. 220
27.1 Basic Rules ......................................... 222
28 IANA Considerations ............................ 239
28.1 Option Tags ......................................... 239
28.1.1 Registration of 100rel .............................. 240
28.2 Warn-Codes .......................................... 241
28.3 Header Field Names .................................. 241
28.4 Method and is a traditional
sequence number.
Contact contains Response Codes ........................... 242
29 Changes Made in Version 00 .......................... 242
30 Changes Made in Version 01 .......................... 249
31 Changes Made in Version 02 .......................... 249
32 Changes Made in Version 03 .......................... 251
33 Changes Made in Version 04 .......................... 254
34 Changes Made in Version 05 .......................... 256
35 Changes Made in Version 06 .......................... 260
36 Acknowledgments ..................................... 272
37 Authors' Addresses .................................. 272
38 Bibliography ........................................ 274
EOTOC
Various Authors [Page h]
1 Introduction
There are many applications of the Internet that require the creation
and management of a SIP URI which represents session, where a direct route to reach
or contact Alice, usually composed session is considered an
exchange of a username at data between an IP address.
While the Via header field association of participants. The
implementation of these services is used complicated by the practices of
participants; users may move between endpoints, they may be
addressable by multiple names, and they may communicate in several
different media - sometimes simultaneously. Numerous protocols have
been authored that carry various forms of real-time multimedia
session data such as voice, video, or text messages. SIP works in
concert with these protocols by enabling Internet endpoints (called
"user agents") to tell other elements where discover one another and to
send the response, the Contact header field tells other elements
where agree on a
characterization of a session they would like to send future requests share. For locating
prospective session participants, and for this dialog.
Content-Type contains a description other functions, SIP
enables creation of the message body (not shown).
Content-Length contains an octet (byte) count of the message body.
The complete set infrastructure of network hosts (called "proxy
servers") to which user agents can send registrations, invitations to
sessions and other requests. SIP header fields is defined in Section 22.
The details an agile, general-purpose tool
for creating, modifying and terminating sessions that works
independently of underlying transport protocols and without
dependency on the session, type of media, codec, sampling rate, etc.
are not described using SIP. Rather, the body session that is being established.
2 Overview of a SIP message
contains a description of the session, encoded in some other protocol
format. One such format is Functionality
The Session Description Initiation Protocol (SDP) [6].
This SDP message (not shown in the example) (SIP) is carried by the SIP
message in an analogous way application-layer control
protocol that a document attachment is carried by
an email message, or a web page is carried in can establish, modify, and terminate multimedia
sessions (conferences) such as Internet telephony calls. SIP can also
invite participants to already existing sessions, such as multicast
conferences. Media can be added to (and removed from) an HTTP message.
Since the softphone has no knowledge existing
session. SIP transparently supports name mapping and redirection
services, which supports personal mobility [1] - users can maintain a
single externally visible identifier (SIP URI) regardless of Bob's exact location, or how
to locate the their
network location.
SIP server in the biloxi.com domain, the softphone
sends supports five facets of establishing and terminating multimedia
communications:
User location: determination of the INVITE end system to be used for
communication;
User availability: determination of the SIP server that serves Alice's domain,
atlanta.com. The IP address willingness of the atlanta.com SIP server could have
been configured
called party to engage in Alice's softphone, or it could have been
discovered by DHCP, for example.
The atlanta.com SIP server is a type communications;
User capabilities: determination of SIP server known as a proxy
server. A proxy server receives SIP requests the media and forwards them on media
parameters to be used;
Session setup: "ringing", establishment of session parameters at
both called and calling party;
Various Authors [Page 6] 2]
Internet Draft SIP October 26, 2001
behalf January 28, 2002
Session management: including transfer and termination of the requestor. In this example, the proxy server receives
the INVITE request
sessions, modifying session parameters, and generates invoking
services.
SIP is not a 100 Trying response which vertically integrated communications system. SIP is sent
back to Alice's softphone. The 100 Trying response indicates
rather a component that can be used with other IETF protocols to
build a complete multimedia architecture. Typically, these
architectures will include protocols such as the
INVITE has been received real-time transport
protocol (RTP) (RFC 1889 [2]) for transporting real-time data and that
providing QoS feedback, the proxy is working on her behalf
to try to route real-time streaming protocol (RTSP) (RFC
2326 [3]) for controlling delivery of streaming media, the INVITE Media
Gateway Control Protocol (MEGACO) (RFC 3015 [4]) for controlling
gateways to the destination. Responses in SIP use
a numerical three digit code followed by a descriptive phrase. This
response contains the same To, From, Call-ID, Public Switched Telephone Network (PSTN), and CSeq as the INVITE,
which allows Alice's softphone
session description protocol (SDP) (RFC 2327 [5]) for describing
multimedia sessions. Therefore, SIP should be used in conjunction
with other protocols in order to correlate this response provide complete services to the sent
INVITE. The atlanta.com proxy server locates
users. However, the proxy server at
biloxi.com, possibly by performing a DNS (Domain Name Service) lookup basic functionality and operation of SIP does not
depend on any of these protocols.
SIP does not provide services. SIP rather provides primitives that
can be used to find the implement different services. For example, SIP server which serves the biloxi.com domain. This can
locate a user and deliver an opaque object to his current location.
If this primitive is
described in Section 24. As used to deliver a result, it obtains session description written in
SDP, for instance, the IP address parameters of a session can be agreed between
endpoints. If the biloxi.com proxy server and forwards, or proxies, same primitive is used to deliver a photo of the INVITE
request there. Before forwarding
caller as well as the request, the atlanta.com proxy
server adds an additional Via header field which contains its own IP
address (the INVITE already contains Alice's IP address in the first
Via). The biloxi.com proxy server receives the INVITE session description, a "caller ID" service can
be easily implemented. As this example shows, a single primitive is
typically used to provide several different services.
SIP does not offer conference control services such as floor control
or voting and responds
with does not prescribe how a 100 Trying response back conference is to the Atlanta.com proxy server be managed.
SIP can be used to
indicate initiate a session that it has received the INVITE uses some other conference
control protocol. Since SIP messages and is processing the
request. sessions they establish
can pass through entirely different networks, SIP cannot, and does
not, provide any kind of network resource reservation capabilities.
The proxy server consults a database, generically called a
location service, which contains the current IP address nature of Bob. (We
shall see in the next section how this database can be populated.)
The biloxi.com proxy server adds another Via header with its own IP
address services provided by SIP make security particularly
important. To that end, SIP provides a suite of security services,
which include denial-of-service prevention, authentication (both user
to the INVITE user and proxies it proxy to Bob's SIP phone.
Bob's user), integrity protection, and encryption and
privacy services.
SIP phone receives the INVITE works with both IPv4 and begins to alert Bob to IPv6.
3 Terminology
In this document, the
incoming call from Alice so that Bob can decide whether or not key words "MUST", "MUST NOT", "REQUIRED",
"SHALL", "SHALLNOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
Various Authors [Page 3]
Internet Draft SIP January 28, 2002
and "OPTIONAL" are to
answer the call - i.e. Bob's phone rings. Bob's be interpreted as described in RFC 2119 [6] and
indicate requirement levels for compliant SIP phone sends an
indication implementations.
4 Overview of this in a 180 Ringing response. Operation
This response is routed
back thorough section introduces the two proxies basic operations of SIP using simple
examples. This section is tutorial in nature and does not contain any
normative statements.
The first example shows the reverse direction. Each proxy
uses the Via header basic functions of SIP: location of an
end point, signal of a desire to figure out where communicate, negotiation of session
parameters to send establish the response, session, and
removes its own address from teardown of the top. As session once
established.
Figure 1 shows a result, although DNS typical example of a SIP message exchange between
two users, Alice and
location service lookups were required to route Bob. (Each message is labeled with the initial INVITE, letter
"F" and a number for reference by the 180 Ringing response can be returned text.) In this example, Alice
uses a SIP application on her PC (referred to as a softphone) to call
Bob on his SIP phone over the caller without
lookups, or without state being maintained in the proxies. This also
has the desirable property that each Internet. Also shown are two SIP proxy
servers that sees act on behalf of Alice and Bob to facilitate the INVITE will
also see all responses session
establishment. This typical arrangement is often referred to as the INVITE.
When Alice's softphone receives
"SIP trapezoid" as shown by the 180 Ringing response, it passes
this information to Alice, perhaps geometric shape of the dashed lines
in Figure 1.
Alice "calls" Bob using his SIP identity, a type of Uniform Resource
Identifier (URI) called a SIP URI and defined in Section 23.1. It has
a similar form to an audio ringback tone, email address, typically containing a username
and a host name. In this case, it is sip:bob@biloxi.com, where
biloxi.com is the domain of Bob's SIP service provider (which can be
an enterprise, retail provider, etc). Alice also has a SIP URI of
sip:alice@atlanta.com. Alice might have typed in Bob's URI or
just by displaying perhaps
clicked on a hyperlink or flashing an entry in an address book.
SIP is based on an HTTP-like request/response transacton model. Each
transaction consists of a message request that invokes a particular "Method",
or function, on Alice's screen. the server, and at least one response. In this
example, Bob decides to answer the call. When he picks up the
handset his transaction begins with Alice's softphone sending an
INVITE request addressed to Bob's SIP phone sends URI. INVITE is an example of a 200 OK response to indicate
SIP method which specifies the action that the
call has been answered. requestor (Alice)
wants the server (Bob) to take. The 200 OK INVITE request contains a message body containing
the SDP media description number
of header fields. Header fields are named attributes that provide
additional information about a message. The ones present in an INVITE
include a unique identifier for the call, the destination address,
Alice's address, and information about the type of session that Bob is willing Alice
wishes to establish with Alice. As a result, there is a two-phase exchange
of SDP messages; Alice sent one to Bob, and Bob sent one back to Bob. The INVITE (message F1 in Figure 1)
might look like this:
Various Authors [Page 7] 4]
Internet Draft SIP October 26, 2001
Alice. This two-phase exchange provides basic negotiation
capabilities, and is based on a simple offer/answer model, If Bob did
not wish to answer the call, or was busy on another call, an error
response would have been sent instead of the 200 OK, which would have
resulted in no media session being established. The complete list of January 28, 2002
atlanta.com . . . biloxi.com
. proxy proxy .
. .
Alice's . . . . . . . . . . . . . . . . . . . . Bob's
softphone SIP response codes is in Section 23. The Phone
| | | |
| INVITE F1 | | |
|--------------->| INVITE F2 | |
| 100 Trying F3 |--------------->| INVITE F4 |
|<---------------| 100 Trying F5 |--------------->|
| |<-------------- | 180 Ringing F6 |
| | 180 Ringing F7 |<---------------|
| 180 Ringing F8 |<---------------| 200 OK (message F9 in Figure
1) might look like this:
SIP/2.0 |
|<---------------| 200 OK F10 |<---------------|
| 200 OK F11 |<---------------| |
|<---------------| | |
| ACK F12 |
|------------------------------------------------->|
| Media Session |
|<================================================>|
| BYE F13 |
|<-------------------------------------------------|
| 200 OK F14 |
|------------------------------------------------->|
| |
Figure 1: SIP session setup example with SIP trapezoid
INVITE sip:bob@biloxi.com SIP/2.0
Via: SIP/2.0/UDP 10.2.1.1:5060;branch=4b43c2ff8.1
Via: SIP/2.0/UDP 10.1.1.1:5060;branch=77ef4c2312983.1
Via: SIP/2.0/UDP 10.1.3.3:5060 pc33.atlanta.com;branch=z9hG4bK776asdhds
To: Bob <sip:bob@biloxi.com>;tag=a6c85cf <sip:bob@biloxi.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710@10.1.3.3 a84b4c76e66710
CSeq: 314159 INVITE
Contact: <sip:bob@10.4.1.4> <sip:alice@pc33.atlanta.com>
Content-Type: application/sdp
Contact-Length: 131
(Bob's
Content-Length: 142
(Alice's SDP not shown)
Various Authors [Page 5]
Internet Draft SIP January 28, 2002
The first line of the response text-encoded message contains the response code (200) and
the reason phrase (OK). method name
(INVITE). The remaining lines contain that follow are a list of header fields. This
example contains a minimum required set. The Via header fields, To, From, Call- ID, and CSeq headers are all copied
from briefly
described below:
Via contains the INVITE request. (Note address (pc33.atlanta.com) on which Alice is
expecting to receive responses to this request.It also contains a
branch parameter that there are three Via headers -
one added by Alice's contains an identifier for this transaction.
To contains a display name (Bob) and a SIP phone, one added by URI (sip:bob@biloxi.com)
towards which the atlanta.com proxy, request was originally directed. Display names are
described in RFC 2822 [7].
From also contains a display name (Alice) and one added by the biloxi.com proxy.) Also note that Bob's a SIP
phone URI
(sip:alice@atlanta.com) that indicate the originator of the request.
This header field also has added a tag parameter containing a pseudorandom
string (1928301774) that was added to the To header field. This tag will
be incorporated URI by both User Agents into the dialog and will be
included in all future requests and responses in softphone. It is
used for identification purposes.
Call-ID contains a globally unique identifier for this call. call,
generated by the combination of a pseudorandom string and the
softphone's IP address. The
Contact header field contains combination of the To, From, and Call-ID
completely define a URI at which Bob can be directly
reached at his peer-to-peer SIP phone. The Content-Type relationship betwee Alice and Content-Length refer
Bob, and is referred to the not shown message body which as a "dialog".
CSeq or Command Sequence contains Bob's SDP media
information.
In additon to DNS an integer and location service lookups shown in this example,
proxy servers can make arbitrarily complex "routing decisions" in
order a method name. The
CSeq number is incremented for each new request, and is a traditional
sequence number.
Contact contains a SIP URI that represents a direct route to decide reach or
contact Alice, usually composed of a username at an FQDN. While a
FQDN is preferred, many end systems do not have registered domain
names, so IP addresses are permitted. While the Via header field
tells other elements where to send a request. For example, if Bob's SIP
phone returned a 486 Busy Here response, the biloxi.com proxy server
could proxy response, the INVITE Contact header
field tells other elements where to Bob's voicemail server. A proxy server can
also send an INVITE to future requests for this
dialog.
Content-Type contains a number description of locations at the same time. This message body (not shown).
Content-Length contains an octet (byte) count of the message body.
The complete set of SIP header fields is defined in Section 24.
The details of the session, type of parallel search media, codec, sampling rate, etc.
are not described using SIP. Rather, the body of a SIP message
contains a description of the session, encoded in some other protocol
format. One such format is known as "forking".
In this case, Session Description Protocol (SDP) [5].
This SDP message (not shown in the 200 OK example) is routed back through carried by the two proxies and SIP
Various Authors [Page 8] 6]
Internet Draft SIP October 26, 2001
is received by Alice's softphone which then stops the ringback tone
and indicates January 28, 2002
message in a way that the call has been answered. Finally, an
acknowledgement message, ACK, is sent by Alice to Bob analogous to confirm a document attachment being
carried by an email message, or a web page being carried in an HTTP
message.
Since the
reception softphone does not know the location of Bob or the final response (200 OK). Note that SIP
server in this example,
the ACK is sent directly from Alice to Bob, bypassing the two
proxies. This is due to biloxi.com domain, the fact that through softphone sends the INVITE/200 OK
exchange, INVITE to
the two SIP user agents have learned each other's server that serves Alice's domain, atlanta.com. The IP
address through the Contact header fields, something which was not
known when of the initial INVITE was sent. The lookups performed atlanta.com SIP server could have been configured in
Alice's softphone, or it could have been discovered by the
two proxies are no longer needed, so they drop put DHCP, for
example.
The atlanta.com SIP server is a type of the call flow.
This completes the INVITE/200/ACK three way handshake used to
establish SIP sessions, server known as a proxy
server. A proxy server receives SIP requests and is the end forwards them on
behalf of the transaction. Full
details on session setup is in Section 13.
Alice requestor. In this example, the proxy server receives
the INVITE request and Bob's media session sends a 100 (Trying) response back to Alice's
softphone. The 100 (Trying) response indicates that the INVITE has now begun,
been received and they begin sending
media packets using that the format agreed proxy is working on her behalf to in route
the exchange of SDP. In
general, INVITE to the end-to-end media packets will take destination. Responses in SIP use a different path from three-digit
code followed by a descriptive phrase. This response contains the SIP signaling messages.
During
same To, From, Call-ID, and CSeq as the session, either Alice or Bob may decide INVITE, which allows Alice's
softphone to correlate this response to change the
characteristics of sent INVITE. The
atlanta.com proxy server locates the media session. This is accomplished proxy server at biloxi.com,
possibly by sending
a re-INVITE containing a new media description. If the change is
acceptable to the other party, performing a 200 OK is sent which is itself
responded particular type of DNS (Domain Name Service)
lookup to with an ACK. This re-INVITE will reference the existing
dialog so find the other party knows SIP server that it is to modify an existing
session instead of establishing a new session. If serves the change biloxi.com domain.
This is not
acceptable, an error response, such as described in [8]. As a 406 Not Acceptable response
is sent, which also receives an ACK. However, result, it obtains the failure IP address of
the re-
INVITE does not cause biloxi.com proxy server and forwards, or proxies, the existing call to fail - INVITE
request there. Before forwarding the session
continues using request, the previously negotiated characteristics. Full
details on session modification is atlanta.com proxy
server adds an additional Via header field that contains its own IP
address (the INVITE already contains Alice's IP address in Section 14.
At the end of first
Via). The biloxi.com proxy server receives the call, Bob disconnects (hangs up) first, INVITE and
generates responds
with a BYE message. This BYE is routed directly 100 (Trying) response back to Alice's
softphone, again bypassing the proxies. Alice confirms receipt of the
BYE with a 200 OK response, which terminates Atlanta.com proxy server to
indicate that it has received the session INVITE and the BYE
transaction. Note that no ACK is sent - an ACK is only sent in
response to a response to an INVITE processing the
request. The reasons for this
special handling for INVITE will be discussed later, but relate to proxy server consults a database, generically called a
location service, that contains the reliability mechanisms current IP address of Bob. (We
shall see in SIP, the length of time it next section how this database can take for
a ringing phone to be answered, populated.)
The biloxi.com proxy server adds another Via header with its own IP
address to the INVITE and forking. For this reason, request
handling in proxies it to Bob's SIP is often classified as either phone.
Bob's SIP phone receives the INVITE or non- INVITE,
referring and alerts Bob to all other methods besides INVITE. Full details on
session termination is in Section 15.
Full details of all the messages shown in incoming
call from Alice so that Bob can decide whether or not to answer the example of Figure 1 are
shown in Section 25.2.
Various Authors [Page 9]
Internet Draft
call, i.e., Bob's phone rings. Bob's SIP October 26, 2001
In some cases, it may be useful for proxies phone sends an indication of
this in the SIP signaling path
see all the messaging between a 180 (Ringing) response, which is routed back through the
two endpoints for the duration of
the session. For example, if the biloxi.com proxy server wished to
remain proxies in the SIP messaging path beyond reverse direction. Each proxy uses the initial INVITE, it would
add Via header
to determine where to send the INVITE response and removes its own address
from the top. As a result, although DNS and location service lookups
were required routing header field known as Record-
Route containing a URI which resolves to route the proxy. This information
would initial INVITE, the 180 (Ringing) response
can be received by both Bob's SIP phone and (due returned to the Record-
Route header field caller without lookups or without state being passed back
maintained in the 200 OK) Alice's softphone
and stored for the duration of the dialog. proxies. This would then result in
the ACK, BYE, and 200 OK to the BYE being received and proxied by also has the
biloxi.com proxy server. Each desirable property that
Various Authors [Page 7]
Internet Draft SIP January 28, 2002
each proxy can independently decide to
receive subsequent messaging, and that messaging sees the INVITE will go through also see all
proxies that elected responses to receive it. A common use of the
INVITE.
When Alice's softphone receives the 180 (Ringing) response, it passes
this capability
is in firewall traversal information to Alice, perhaps using an audio ringback tone or mid-call feature implementation.
Registration is another common operation in SIP. Registration is one
way in which by
displaying a message on Alice's screen.
In this example, Bob decides to answer the biloxi.com server can learn call. When he picks up the current location of
Bob. Upon initialization, and at periodic intervals, Bob's
handset, his SIP phone sends REGISTER messages a server in 200 (OK) response to indicate that the biloxi.com domain known as a
SIP registrar.
call has been answered. The REGISTER messages associate Bob's SIP URL
(sip:bob@biloxi.com) 200 (OK) contains a message body with the machine he is currently logged in at
(conveyed as a SIP URL in
SDP media description of the Contact header). The registrar writes
this association, also called a binding, type of session that Bob is willing to
establish with Alice. As a database, called the
location service , where it can be used by the proxy in the
biloxi.com domain. Often, a registrar server for result, there is a domain two-phase exchange of
SDP messages; Alice sent one to Bob, and Bob sent one back to Alice.
This two-phase exchange provides basic negotiation capabilities and
is co-
located with based on a simple offer/answer model of SDP exchange. If Bob did
not wish to answer the proxy for that domain. It is call or was busy on another call, an important concept
that error
response would have been sent instead of the distinction between types 200 (OK), which would
have resulted in no media session being established. The complete
list of SIP servers are logical, not
physical.
Bob response codes is in Section 25. The 200 (OK) (message F9
in Figure 1) might look like this as Bob sends it out:
SIP/2.0 200 OK
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds
Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Contact: <sip:bob@192.0.2.8>
Content-Type: application/sdp
Content-Length: 131
(Bob's SDP not limited to registering shown)
The first line of the response contains the response code (200) and
the reason phrase (OK). The remaining lines contain header fields.
The Via header fields, To, From, Call- ID, and CSeq are all copied
from a single device. For example,
both his the INVITE request. (There are three Via headers - one added by
Alice's SIP phone at home and phone, one added by the atlanta.com proxy, and one in added
by the office could send in
registrations. biloxi.com proxy.) Bob's SIP phone has added a tag parameter
to the To header field. This information is stored together in tag will be incorporated by both User
Agents into the location
service, dialog and allows will be included in all future requests
and responses in this call. The Contact header field contains a proxy to perform various types of searches to
locate Bob. Similarly, more than one user URI
at which Bob can be registered on a
single device directly reached at the same time. his SIP phone. The Content-
Various Authors [Page 8]
Internet Draft SIP January 28, 2002
Type and Content-Length refer to the message body (not shown) that
contains Bob's SDP media information.
In additon to DNS and location service is just an abstract concept. It generally
contains information that allows a lookups shown in this example,
proxy servers can make flexible "routing decisions" to input decide where
to send a URI and get back request. For example, if Bob's SIP phone returned a translated URI that tells 486
(Busy Here) response, the biloxi.com proxy server could proxy where to send the request.
Registrations are one way
INVITE to create this information, but not the
only way. Arbitrarily complex mapping functions Bob's voicemail server. A proxy server can be programmed, also send an
INVITE to a number of locations at the discretion same time. This type of
parallel search is known as "forking".
In this case, the administrator.
Finally, it 200 (OK) is important to note that in SIP, registration routed back through the two proxies and
is used
for routing incoming SIP requests and has no role in authorizing
outgoing requests. Authorization and authentication are handled in
SIP either on a request received by request, challenge/response mechanism, or
using a lower layer scheme as discussed in Section 20.
Various Authors [Page 10]
Internet Draft SIP October 26, 2001
The complete set of SIP message details for this registration example
is in Section 25.2.
Additional operations in SIP include querying for Alice's softphone which then stops the capabilities of
a SIP server or client using OPTIONS, ringback tone
and canceling a pending request
using CANCEL will be introduced in later sections.
5 Structure of the Protocol
The SIP protocol is structured as a layered protocol, which means indicates that its behavior is described in terms of a set of fairly
independent processing stages, with only a loose coupling between
each stage. The structuring of the protocols into layers call has been answered. Finally, an
acknowledgement message, ACK, is for sent by Alice to Bob to confirm the
purpose
reception of presentation and conciseness; it allows the grouping of
functions common across elements into a single place. It does not
dictate an implementation in any way. When we say that an element
"contains" a layer, that means it final response (200 (OK)). In this example, the ACK
is compliant sent directly from Alice to Bob, bypassing the set of rules
defined by that layer.
Not every element specified by two proxies. This
is because, through the protocol contains every layer.
Furthermore, INVITE/200 (OK) exchange, the elements specified by two SIP are logical elements, user
agents have learned each other's IP address through the Contact
header fields, which was not
physical ones. A physical realization can choose to act as different
logical elements, perhaps even on a transaction by transaction basis. known when the initial INVITE was sent.
The lowest layer lookups performed by the two proxies are no longer needed, so
they drop out of the call flow. This completes the INVITE/200/ACK
three-way handshake used to establish SIP protocol is its syntax sessions and encoding. Its
encoding is specified using a BNF. The complete BNF is specified in
Section 26. However, a basic overview of the structure end of a SIP
message can be found
the transaction. Full details on session setup are in Section 7. This section introduces enough of
an understanding of 13.
Alice and Bob's media session has now begun, and they send media
packets using the format agreed to in the exchange of SDP. In
general, the end-to-end media packets take a different path from the
SIP message signaling messages.
During the session, either Alice or Bob may decide to facilitate
understanding change the remainder
characteristics of the protocol.
The next higher layer is the transport layer. media session. This layer defines how
a client takes a request, and physically sends it over the network,
and how a response is sent by a server, and then received accomplished by sending
a
client. All SIP elements contain re-INVITE containing a transport layer. The transport
layer is described in Section 19.
The next higher layer is new media description. If the transaction layer. Transactions are a
fundamental component of SIP. A transaction change is a request, sent
accepted by a
client transaction (using the transport layer), to other party, a server
transaction, along 200 (OK) is sent, which is itself
responded to with all responses to that request sent from an ACK. This re-INVITE references the
server transaction back to existing
dialog so the client. The transaction layer handles
retransmissions, matching of responses to requests, and timeouts. Any
task other party knows that a UAC wishes it is to accomplish takes place using a series modify an existing
session instead of
transactions. Discussion establishing a new session. If the change is not
accepted, an error response, such as a 406 (Not Acceptable), is sent,
which also receives an ACK. However, the failure of transactions can be found the re-INVITE
does not cause the existing call to fail - the session continues
using the previously negotiated characteristics. Full details on
session modification are in Section 17.
User agents contain 14.
At the end of the call, Bob disconnects (hangs up) first, and
generates a transaction layer, as do stateful BYE message. This BYE is routed directly to Alice's
softphone, again bypassing the proxies.
Stateless proxies do not contain Alice confirms receipt of the
BYE with a transaction layer. 200 (OK) response, which terminates the session and the
BYE transaction. No ACK is sent - an ACK is only sent in response to
Various Authors [Page 11] 9]
Internet Draft SIP October 26, 2001
The transaction layer has January 28, 2002
a client component (referred response to as a client
transaction), and a server component (referred an INVITE request. The reasons for this special
handling for INVITE will be discussed later, but relate to as a server
transaction), each the
reliability mechanisms in SIP, the length of which are represented by an FSM that time it can take for a
ringing phone to be answered, and forking. For this reason, request
handling in SIP is
constructed often classified as either INVITE or non- INVITE,
referring to process a particular request. The layer all other methods besides INVITE. Full details on top
session termination are in Section 15.
Full details of all the
transaction layer is called messages shown in the transaction user (TU), example of which there Figure 1 are several types. When a TU wishes to send a request, it creates a
client transaction instance and passes
shown in Section 26.2.
In some cases, it may be useful for proxies in the request, along with SIP signaling path
to see all the
destination IP address, port, and transport messaging between the endpoints for the duration of
the session. For example, if the biloxi.com proxy server wished to send
remain in the request to. SIP provides messaging path beyond the ability for a transaction initial INVITE, it would
add to be canceled by the
client which initiated it. When a client cancels INVITE a transaction, it
requests required routing header field known as Record-
Route that contained a URI resolving to the server give up on further processing, revert proxy. This information
would be received by both Bob's SIP phone and (due to the
state that existed before Record-
Route header field being passed back in the transaction was initiated, 200 (OK)) Alice's
softphone and generate
a specific error response stored for the duration of the dialog. The biloxi.com
proxy server would then receive and proxy the ACK, BYE, and 200 (OK)
to the BYE. Each proxy can independently decide to receive subsequent
messaging, and that transaction. messaging will go through all proxies that elect
to receive it. This capability is done with a
CANCEL request, which constitutes its own transaction, but references
the transaction to be cancelled. Cancellation is described in Section
9.
There are several different types of transaction users. A UAC
contains a UAC core, a UAS contains a UAS core, and a proxy contains
a proxy core. The behavior of the UAC and UAS cores depend largely on
the method. However, there are some common rules frequently used for all methods.
These rules proxies that
are captured in Section 8. The primarily deal with
construction of a request, providing mid-call features.
Registration is another common operation in SIP. Registration is one
way that the case of a UAC, and processing biloxi.com server can learn the current location of
that request, Bob.
Upon initialization, and generation of at periodic intervals, Bob's SIP phone sends
REGISTER messages to a response, server in the case of biloxi.com domain known as a UAS.
UAC and UAS core behavior for the SIP
registrar. The REGISTER method messages associate Bob's SIP URI
(sip:bob@biloxi.com) with the machine he is described in
Section 10. Registrations play an important role currently logged in SIP. In fact, a
UAS that handles at
(conveyed as a REGISTER is given SIP URI in the Contact header). The registrar writes
this association, also called a special name - binding, to a registrar -
and it is described in that section.
UAC and UAS core behavior for database, called the OPTIONS method,
location service , where it can be used for
determining by the capabilities of a UAC, are described proxy in Section 11.
Certain other requests are sent within a dialog peer-to-peer SIP
relationship between the
biloxi.com domain. Often, a two user agents that persists registrar server for some time.
The dialog facilitates sequencing of messages between the user
agents, and proper routing of requests between both them. One way to
setup a dialog domain is co-
located with the INVITE method. When a UAC sends a request proxy for that domain. It is within an important concept
that the context distinction between types of SIP servers is logical, not
physical.
Bob is not limited to registering from a dialog, it follows single device. For example,
both his SIP phone at home and the common UAC
rules as discussed one in Section 8, but also the rules for mid-dialog
requests. Section 12 discusses dialogs, and presents office could send
registrations. This information is stored together in the procedures
for their construction, location
service and maintenance, in addition allows a proxy to construction perform various types of requests within a dialog.
The most important method in SIP is the INVITE method, which is used searches to establish
locate Bob. Similarly, more than one user can be registered on a session between participants. A session
single device at the same time.
The location service is a
collection of participants, and streams of media between them, for just an abstract concept. It generally
Various Authors [Page 12] 10]
Internet Draft SIP October 26, 2001 January 28, 2002
contains information that allows a proxy to input a URI and get back
a translated URI that tells the purposes of communication. Section 13 discusses how sessions proxy where to send the request.
Registrations are
initiated, resulting in one or more SIP dialogs. Section 14 discusses
how characteristics way to create this information, but not the
only way. Arbitrary mapping functions can be programmed, at the
discretion of that session are modified, through the use of
an INVITE request within a dialog. administrator.
Finally, section 15 discusses how
a session it is terminated.
The procedures of Sections 8, 10, 11, 12, 13, 14, and 15 deal
entirely with the UA core. Section 16 discusses the proxy element,
which facilitates routing of messages between user agents.
6 Definitions
This specification uses a number of terms to refer important to the roles
played by participants note that in SIP communications. The definitions of
client, server and proxy are similar to those SIP, registration is used by the Hypertext
Transport Protocol (HTTP) (RFC 2616 [8]). The terms
for routing incoming SIP requests and generic
syntax of URI has no role in authorizing
outgoing requests. Authorization and URL authentication are defined handled in RFC 2396 [9].
SIP either on a request-by-request, challenge/response mechanism, or
using a lower layer scheme as discussed in Section 22.
The following
terms have special significance complete set of SIP message details for SIP.
Back-to-Back user agent: A back-to-back user agent (B2BUA) this registration example
is a
logical entity that receives a request, and processes it in Section 26.1.
Additional operations in SIP, such as
a UAS. In order to determine how querying for the request should be
answered, it acts as capabilities
of a UAC and generates requests. Unlike SIP server or client using OPTIONS, canceling a
proxy server, it maintains dialog state, and must
participate pending request
using CANCEL, or supporting reliability of provisional responses
using PRACK will be introduced in all requests sent on later sections.
5 Structure of the dialogs it has
established. Since it Protocol
SIP is structured as a concatenation of a UAC and UAS,
no explicit definitions are needed for layered protocol, which means that its behavior.
Call: A call
behavior is an informal term that refers to described in terms of a dialog between
peers, generally set up for the purposes of fairly independent
processing stages with only a multimedia
conversation.
Call leg: Another name for a dialog.
Call stateful: A proxy loose coupling between each stage. The
protocol is call stateful if it retains state structured into layers for
a dialog from the initiating INVITE to the terminating BYE
request. A call stateful proxy is always stateful, but purpose of presentation
and conciseness; it allows the
converse is grouping of functions common across
elements into a single place. It does not true.
Client: A client is dictate an implementation
in any network element way. When we say that sends SIP requests,
and receives SIP responses. Clients may or may not interact
directly with an element "contains" a human user. User agent clients and proxies
are clients.
Conference: A multimedia session (see below) layer, we mean
it is compliant to the set of rules defined by that layer.
Not every element specified by the protocol contains
multiple participants.
Dialog: A dialog is a peer-to-peer every layer.
Furthermore, the elements specified by SIP relationship between are logical elements, not
physical ones. A physical realization can choose to act as different
logical elements, perhaps even on a
Various Authors [Page 13]
Internet Draft transaction-by-transaction basis.
The lowest layer of SIP October 26, 2001
UAC is its syntax and UAS that persists for some time. A dialog encoding. Its encoding is
established by SIP messages, such as
specified using a 2xx response to an
INVITE request. A dialog BNF. The complete BNF is identified by specified in Section 27.
However, a call
identifier, local address, and remote address. A dialog was
formerly known as basic overview of the structure of a call leg SIP message can be
found in RFC 2543.
Downstream: A direction Section 7. This section provides enough understanding of message forwarding within a
transaction which refers to the direction that requests
flow from the user agent client to user agent server.
Final response: A response that terminates
format of a SIP transaction, as
opposed message to a provisional response that does not. All 2xx,
3xx, 4xx, 5xx and 6xx responses are final.
Informational Response: Same as a provisional response.
Initiator, calling party, caller: The party initiating a session
with an INVITE request. A caller retains this role from the
time it sends the INVITE until facilitate understanding the termination remainder of any
dialogs established by
the INVITE.
Invitation: An INVITE request.
Invitee, invited user, called party, callee: protocol.
The party that
receives an INVITE request for next higher layer is the purposes of establishing transport layer. This layer defines how
a client takes a new session. A callee retains this role from the time it
receives the INVITE until the termination of the dialog
established by that INVITE.
Isomorphic request or response: Two requests are defined to be
isomorphic for the purposes of this document if they have
the same values for the Call-ID, To, From, CSeq, Request-
URI and physically sends it over the top-most Via header. Two responses are
isomorphic if they have the same values for the Call-ID,
To, From, CSeq network,
and top Via header. A message which is
isomorphic to another is also known as how a retransmission.
Location server: See location service.
Location service: A location service response is used sent by a SIP redirect
or proxy server to obtain information about and then received by a callee's
possible location(s). It is an abstract database, sometimes
referred to as client.
All SIP elements contain a location server. transport layer. The contents of the
database can be populated in many ways, including being
written by registrars.
Loop: A request that arrives at a proxy, transport layer is forwarded, and later
arrives back at the same proxy. When it arrives the second
described in Section 19.
Various Authors [Page 14] 11]
Internet Draft SIP October 26, 2001
time, its Request-URI is identical to the first time, and
other headers that affect proxy operation are unchanged, so
that the proxy would make the same processing decision on
the request it made the first time around. Looped requests
are errors, and the procedures for detecting them and
handling them are described by the protocol.
Method: January 28, 2002
The method next higher layer is the primary function that transaction layer. Transactions are a request
fundamental component of SIP. A transaction is
meant to invoke on a server. The method is carried in request, sent by a
client transaction (using the
request message itself. Example methods are INVITE and BYE.
Outbound proxy: A proxy that receives transport layer), to a server
transaction, along with all requests responses to that request sent from a
client, even though it is not the
server resolved by transaction back to the
Request-URI. client. The outbound proxy sends these requests, after
any local processing, transaction layer handles
application layer retransmissions, matching of responses to the address indicated in the
Request-URI, or requests,
and application layer timeouts. Any task that a UAC accomplishes
takes place using a series of transactions. Discussion of
transactions can be found in Section 17. User agents contain a
transaction layer, as do stateful proxies. Stateless proxies do not
contain a transaction layer.
The transaction layer has a client component (referred to another outbound proxy.
Parallel search: In as a parallel search, client
transaction), and a proxy issues several
requests server component (referred to possible user locations upon receiving as a server
transaction), each of which are represented by an
incoming FSM that is
constructed to process a particular request. Rather than issuing one request and then
waiting for The layer on top of the final response before issuing
transaction layer is called the next
request as in transaction user (TU), of which there
are several types. When a sequential search , TU wishes to send a parallel search
issues requests without waiting for request, it creates a
client transaction instance and passes it the result of previous
requests.
Provisional response: request along with the
destination IP address, port, and transport to which to send the
request.
A response used by TU which creates a client transaction can also cancel it. When a
client cancels a transaction, it requests that the server stop
further processing, revert to indicate
progress, but the state that does not terminate existed before the
transaction was initiated, and generate a SIP transaction.
1xx responses are provisional, other responses are
considered final.
Proxy, proxy server: An intermediary entity specific error response to
that acts as both a
server and transaction. This is done with a client for CANCEL request, which
constitutes its own transaction, but references the purpose of making requests on
behalf transaction to be
cancelled. Cancellation is described in Section 9.
There are several different types of other clients. transaction users. A UAC
contains a UAC core, a UAS contains a UAS core, and a proxy server primarily plays to
role of routing, which means its job is to ensure that contains
a
request is passed proxy core. The behavior of the UAC and UAS cores depend largely on to another entity that can further
process
the request. Proxies method. However, there are also useful for enforcing
policy and some common rules for firewall traversal. A proxy interprets, and,
if necessary, rewrites parts all methods.
These rules are captured in Section 8. They primarily deal with
construction of a request, in the case of a UAC, and processing of
that request message before
forwarding it.
Registrar: A registrar and generation of a response, in the case of a UAS.
UAC and UAS core behavior for the REGISTER method is described in
Section 10. Registrations play an important role in SIP. In fact, a server
UAS that accepts handles a REGISTER
requests, is given a special name - a registrar -
and places the information it receives is described in those
requests into that section.
UAC and UAS core behavior for the location service OPTIONS method, used for
determining the domain it
handles.
Regular Transaction: capabilities of a UA, are described in Section 11.
Certain other requests are sent within a dialog. A regular transaction dialog is any transaction
with a method other than INVITE, ACK, or CANCEL.
peer-to-peer SIP relationship between two user agents that persists
Various Authors [Page 15] 12]
Internet Draft SIP October 26, 2001
Ringback: Ringback is January 28, 2002
for some time. The dialog facilitates sequencing of messages and
proper routing of requests between the signaling tone produced by user agents. The INVITE method
is the calling
party's application indicating that only way defined in this specification to establish a called party is being
alerted (ringing).
Server: A server is dialog.
When a network element UAC sends a request that receives requests is within the context of a dialog, it
follows the common UAC rules as discussed in
order to service them, Section 8, but also the
rules for mid-dialog requests. Section 12 discusses dialogs and sends back responses
presents the procedures for their construction, and maintenance, in
addition to those
requests. Examples construction of servers requests within a dialog.
The UAS core can generate provisional responses to requests, which
are proxies, user agent
servers, redirect servers, and registrars.
Sequential search: In responses that provide additional information about the request
processing but do not indicate completion. Normally, provisional
responses are not transmitted reliably. However, an optional
mechanism exists for them to be transmitted reliably. This mechanism
makes use of a sequential search, method called PRACK, sent as a proxy server
attempts each contact address in sequence, proceeding to separate transaction
within the next one only after dialog between the previous has generated UAC and UAS, which is used to
acknowledge a non-
2xx final reliable provisional response.
Session: From
The most important method in SIP is the SDP specification: "A multimedia INVITE method, which is used
to establish a session between participants. A session is a
set
collection of multimedia senders and receivers participants, and the data streams flowing from senders to receivers. A multimedia
conference is an example of a multimedia session." (RFC
2327 [6]) (A session as defined media between them, for SDP can comprise
the purposes of communication. Section 13 discusses how sessions are
initiated, resulting in one or more RTP sessions.) As defined, a callee can be invited
several times, by different calls, to SIP dialogs. Section 14 discusses
how characteristics of that session are modified through the same session. If
SDP is used, use of
an INVITE request within a dialog. Finally, section 15 discusses how
a session is defined by the concatenation terminated.
The procedures of Sections 8, 10, 11, 12, 13, 14, and 15 deal
entirely with the user name , session id , network type , address type UA core (Section 9 describes cancellation, which
applies to both UA core and address elements in proxy core). Section 16 discusses the origin field.
(SIP) transaction: A SIP transaction occurs
proxy element, which facilitates routing of messages between user
agents.
6 Definitions
This specification uses a client and
a server and comprises all messages from the first request
sent from the client to the server up number of terms to a final (non-1xx)
response sent from the server refer to the client, roles
played by participants in SIP communications. The terms and the ACK
for the response generic
syntax of URI and URL are defined in the case the response was a 2xx. RFC 2396 [9]. The
ACK following
terms have special significance for a 2xx response is a separate transaction.
Spiral: SIP.
Back-to-Back user agent: A spiral back-to-back user agent (B2BUA) is a SIP request which is routed to
logical entity that receives a proxy,
forwarded onwards, request and arrives once again at that proxy,
but this time, differs in a way which will result in a
different processing decision than the original request.
Typically, this means that processes it has a Request-URI that
differs from the previous arrival. A spiral is not as
an error
condition, unlike a loop.
Stateless proxy: A logical entity that does not maintain the
client or user agent server transaction state machines defined in this
specification when it processes requests. A stateless proxy
forwards every (UAS). In order to determine how the
request should be answered, it receives downstream acts as an user agent client
(UAC) and every
response generates requests. Unlike a proxy server, it receives upstream.
Stateful proxy: A logical entity that
maintains dialog state and must participate in all requests
sent on the client dialogs it has established. Since it is a
concatenation of a UAC and
server transaction state machines defined by this UAS, no explicit definitions are
Various Authors [Page 16] 13]
Internet Draft SIP October 26, 2001
specification during January 28, 2002
needed for its behavior.
Call: A call is an informal term that refers to a dialog between
peers generally set up for the processing purposes of a request. Also
known as multimedia
conversation.
Call leg: Another name for a transaction dialog.
Call stateful: A proxy is call stateful proxy. The behavior of if it retains state for
a dialog from the initiating INVITE to the terminating BYE
request. A call stateful proxy is further defined in Section 16. always stateful, but the
converse is not true.
Client: A stateful
proxy client is any network element that sends SIP requests
and receives SIP responses. Clients may or may not the same as interact
directly with a call stateful proxy.
Transaction human user. User (TU): The layer of protocol processing agent clients and proxies
are clients.
Conference: A multimedia session (see below) that
resides above the transaction layer. Transaction users
include the contains
multiple participants.
Dialog: A dialog is a peer-to-peer SIP relationship between a
UAC core, and UAS core, that persists for some time. A dialog is
established by SIP messages, such as a 2xx response to an
INVITE request. A dialog is identified by a call
identifier, local address, and proxy core.
Upstream: remote address. A dialog
was formerly known as a call leg in RFC 2543.
Downstream: A direction of message forwarding within a
transaction
which that refers to the direction that responses requests flow
from the user agent server client to user agent client.
URL-encoded: A character string encoded according to RFC 1738,
Section 2.2 [10].
User agent client (UAC): server.
Final response: A user agent client is a logical entity response that creates terminates a new request, and then uses the client
transaction state machinery SIP transaction, as
opposed to send it. The role of UAC
lasts only for the duration of a provisional response that transaction. In other
words, if does not. All 2xx,
3xx, 4xx, 5xx and 6xx responses are final.
Header: A header is a piece component of software initiates a request, it acts sip message that conveys
information about the message. It is structured as a UAC for the duration of that transaction. If it
receives header
name, followed by a request later on, it takes on the role of colon, followed by its value.
Home Domain: The domain providing service to a User
Agent Server for SIP user.
Typically, this is the processing of that transaction.
UAC Core: The set of processing functions required domain present in the URI in the
address-of-record of a UAC that
reside above the transaction and transport layers.
User agent server (UAS): A user agent server is a logical entity
that generates registration.
Informational Response: Same as a response to provisional response.
Initiator, calling party, caller: The party initiating a session
(and dialog) with an INVITE request. A caller retains this
Various Authors [Page 14]
Internet Draft SIP January 28, 2002
role from the time it sends the initial INVITE which
established a dialog, until the termination of that dialog.
Invitation: An INVITE request.
Invitee, invited user, called party, callee: The response
accepts, rejects or redirects party that
receives an INVITE request for the request. This purposes of establishing
a new session. A callee retains this role lasts
only for from the duration time it
receives the INVITE until the termination of the dialog
established by that transaction. In other words,
if INVITE.
Location service: A location service is used by a piece of software responds SIP redirect
or proxy server to obtain information about a request, it acts as callee's
possible location(s). It contains a
UAS for the duration list of that transaction. If it generates bindings of
adress-of-record keys to zero or more contact addresses.
The bindings can be created and removed in many ways; this
specification defines a REGISTER method that updates the
bindings.
Loop: A request that arrives at a proxy, is forwarded, and later on,
arrives back at the same proxy. When it takes arrives the second
time, its Request-URI is identical to the first time, and
other headers that affect proxy operation are unchanged, so
that the proxy would make the same processing decision on
the role of a User agent
client request it made the first time around. Looped requests
are errors, and the procedures for detecting them and
handling them are described by the processing protocol.
Message: Data sent between SIP elements as part of that transaction.
UAS Core: the the
protocol. SIP messages are either requests or responses.
Method: The set of processing functions required at a UAS method is the primary function that
reside above a request is
meant to invoke on a server. The method is carried in the transaction
request message itself. Example methods are INVITE and transport layers.
User agent (UA): BYE.
Outbound proxy: A logical entity which can act as both proxy that receives all requests from a user
agent client and user agent
client, even though it is not the server for resolved by the duration of a
dialog.
Request-URI. The role of UAC and UAS as well as outbound proxy and redirect servers are
defined on a transaction-by-transaction basis. For example, sends these requests, after
any local processing, to the user
agent initiating address indicated in the
Request-URI, or to another outbound proxy. Typically, a call acts as UA
is manually configured with its outbound proxy, or can
learn it through auto-configuration protocols.
Parallel search: In a UAC when sending the initial INVITE parallel search, a proxy issues several
requests to possible user locations upon receiving an
incoming request. Rather than issuing one request and then
waiting for the final response before issuing the next
request as in a UAS when receiving sequential search , a BYE request from the callee. parallel search
Various Authors [Page 17] 15]
Internet Draft SIP October 26, 2001
Similarly, the same software can act as a proxy server for one
request and as a redirect server January 28, 2002
issues requests without waiting for the next request.
Proxy, location and registrar servers defined above are logical
entities; implementations MAY combine them into result of previous
requests.
Provisional response: A response used by the server to indicate
progress, but that does not terminate a single application
program.
7 SIP Messages SIP transaction.
1xx responses are provisional, other responses are
considered final. Normally, provisional responses are not
sent reliably. A provisional response that is sent reliably
is referred to as a text-based protocol reliable provisional response
Proxy, proxy server: An intermediary entity that acts as both a
server and uses a client for the ISO 10646 character set in
UTF-8 encoding (RFC 2279 [11]). purpose of making requests on
behalf of other clients. A SIP message proxy server primarily plays the
role of routing, which means its job is either to ensure that a
request from is passed on to another entity "closer" to the
targeted user. Proxies are also useful for enforcing policy
(for example, making sure a client user is allowed to make a server, or
call). A proxy interprets, and, if necessary, rewrites
specific parts of a request message before forwarding it.
Recursion: A client recurses on a 3xx response from when it generates
a server new request to a client.
Both Request (section 7.1) and Response (section 7.2) messages use the generic-message format of RFC 822 [12]. Both types of messages
consist of a start-line, one or more header fields (also known as
"headers"), an empty line indicating URIs in the end of Contact headers in the header fields,
and an optional message-body.
generic-message = start-line
*message-header
CRLF
[ message-body ]
The start-line, each message-header line, and
response.
Redirect Server: A redirect server is a server that generates
3xx responses to requests it receives, directing the empty line MUST be
terminated by client
to contact an alternate URI.
Registrar: A registrar is a carriage-return line-feed sequence (CRLF). Note server that accepts REGISTER
requests, and places the empty line MUST be present even if information it receives in those
requests into the message-body is not.
Except location service for the above difference in character sets, much of SIP's
message and header field syntax domain it
handles.
Regular Transaction: A regular transaction is identical to HTTP/1.1. Rather any transaction
with a method other than
repeating INVITE, ACK, or CANCEL.
Reliable Provisional Response: A provisional response that is
sent reliably from the syntax and semantics here we use [HX.Y] UAS to refer UAC.
Request: A SIP message sent from a client to
Section X.Y of a server, for the current HTTP/1.1 specification (RFC 2616 [8]).
Note, however, that SIP is not an extension
purpose of HTTP.
7.1 Requests invoking a particular operation.
Response: A SIP Requests are distinguished by having message sent from a Request-Line for server to a start-
line. A Request-Line begins with client, for
indicating the status of a method token, followed by request sent from the
Request-URI and client to
the protocol version, and ending with CRLF. The
elements are separated server.
Ringback: Ringback is the signaling tone produced by SP characters. No CR or LF are allowed
except in the end-of-line CRLF sequence. No LWS calling
party's application indicating that a called party is allowed in any of
the elements. being
Various Authors [Page 18] 16]
Internet Draft SIP October 26, 2001
Method Request-URI SIP-Version
o Method
This specification defines six methods : REGISTER for
registering contact information, INVITE, ACK and CANCEL for
setting up sessions, BYE for terminating sessions and OPTIONS
for querying servers about their capabilities. SIP extensions
may define additional methods.
o Request-URI
The Request-URI is January 28, 2002
alerted (ringing).
Route Refresh Request: A route refresh request sent within a SIP URL
dialog is defined as described in Section 21.1 or a
general URI (RFC 2396 [9]). It indicates the user or service
to which this request is being addressed. The Request-URI
MUST NOT contain unescaped spaces or control characters and
MUST NOT be enclosed in "<>".
SIP servers MAY support Request-URIs with schemes other than
"sip", for example that can modify the "tel" URI scheme route
set of RFC 2806 [13]. It
MAY translate non-SIP URIs using any mechanism at its
disposal, resulting in either a SIP URI or some other scheme.
o SIP Version
Both request and response messages include the version of SIP dialog.
Server: A server is a network element that receives requests in use, and follow [H3.1] (with HTTP replaced by SIP, and
HTTP/1.1 replaced by SIP/2.0) regarding version ordering,
compliance requirements,
order to service them and upgrading of version numbers. To
be compliant with this specification, applications sending SIP
messages MUST include a SIP- Version sends back responses to those
requests. Examples of "SIP/2.0". The string
is case-insensitive, but implementations MUST send upper-case.
Unlike HTTP/1.1, SIP treats the version number as a
literal string. In practice, this should make no
difference.
7.2 Responses
SIP Responses servers are distinguished by having a Status-Line for proxies, user agent
servers, redirect servers, and registrars.
Sequential search: In a start-
line. A Status-Line, consists of the protocol version followed by sequential search, a
numeric Status-Code and its associated textual phrase, with proxy server
attempts each
element separated by SP characters. No CR or LF is allowed except contact address in sequence, proceeding to
the final CRLF sequence.
SIP-version Status-Code Reason-Phrase
Various Authors [Page 19]
Internet Draft SIP October 26, 2001
The Status-Code is a 3-digit integer result code that indicates next one only after the
outcome of an attempt to understand and satisfy previous has generated a request. The
Reason-Phrase non-
2xx final response.
Session: From the SDP specification: "A multimedia session is intended to give a short textual description
set of multimedia senders and receivers and the
Status-Code. The Status-Code data
streams flowing from senders to receivers. A multimedia
conference is intended an example of a multimedia session." (RFC
2327 [5]) (A session as defined for use SDP can comprise one or
more RTP sessions.) As defined, a callee can be invited
several times, by automata, whereas different calls, to the Reason-Phrase same session. If
SDP is intended for the human user. A client used, a session is not
required to examine or display defined by the Reason-Phrase.
The first digit concatenation of
the Status-Code defines user name , session id , network type , address type ,
and address elements in the class of response.
The last two digits do not have any categorization role. For this
reason, any response with a status code origin field.
(SIP) transaction: A SIP transaction occurs between 100 and 199 is
referred to as a "1xx response", any response with a status code
between 200 client and 299 as
a "2xx response", server and so on. SIP/2.0 allows 6
values for comprises all messages from the first digit:
1xx: Informational -- request received, continuing to process
the request;
2xx: Success --
sent from the action was successfully received,
understood, and accepted;
3xx: Redirection -- further action needs to be taken in order client to
complete the request;
4xx: Client Error -- the request contains bad syntax or cannot
be fulfilled at this server;
5xx: Server Error -- the server failed up to fulfill an apparently
valid request;
6xx: Global Failure -- a final (non-1xx)
response sent from the request cannot be fulfilled at any
server.
Full definitions of these classes and each registered code appear in
Section 23.
7.3 Header Fields
SIP header fields are similar server to HTTP header fields in both syntax the client, and semantics. In particular, SIP header fields follow the [H4.2]
definitions of syntax ACK
for message-header, the rules for extending
header fields over multiple lines, response in the use of multiple message-header
fields with case the same field-name, response was a non-2xx.
The ACK for a 2xx response is a separate transaction.
Spiral: A spiral is a SIP request that is routed to a proxy,
forwarded onwards, and the rules regarding ordering of
header fields.
7.3.1 Header Field Format
Header fields follow the same generic header format as arrives once again at that given proxy,
but this time, differs in
Section 3.1 of RFC 822 [12]. Each header field consists of a field
Various Authors [Page 20]
Internet Draft SIP October 26, 2001
name followed by way that will result in a colon (":") and
different processing decision than the field value.
field-name: field-value
Note original request.
Typically, this means that the formal grammar for request's Request-URI
differs from its previous arrival. A spiral is not an error
condition, unlike a message-header specified in
Section 26 allow loop. A typical cause for an arbitrary amount of whitespace on either side
of the colon. No space before this is call
forwarding. A user calls joe@example.com. The example.com
proxy forwards it to Joe's PC, which in turn, forwards it
to bob@example.com. This request is proxied back to the colon and
example.com proxy. However, this is not a single space (SP)
between the colon and loop. Since the field-value
request is preferred. That is,
Subject: lunch
Subject : lunch
Subject :lunch
Subject: lunch
are all valid, targeted at a different user, it is considered a
spiral, and equivalent, but the last is a valid condition.
Various Authors [Page 17]
Internet Draft SIP January 28, 2002
Stateful proxy: A logical entity that maintains the preferred form.
Header fields can be extended over multiple lines by preceding each
extra line with at least one SP or horizontal tab (HT). The line
break client and
server transaction state machines defined by this
specification during the whitespace at the beginning processing of the next line are
treated a request. Also
known as a single SP character. Thus the following are equivalent:
Subject: I know you're there, pick up the phone and talk to me!
Subject: I know you're there,
pick up the phone
and talk to me! transaction stateful proxy. The relative order behavior of header fields with different field names a
stateful proxy is not
significant. The relative order of those with the same field name further defined in Section 16. A stateful
proxy is
important. Multiple header fields with not the same field-name may be
present in as a message if and only if the entire field-value for that
header field is call stateful proxy.
Stateless proxy: A logical entity that does not maintain the
client or server transaction state machines defined as in this
specification when it processes requests. A stateless proxy
forwards every request it receives downstream and every
response it receives upstream.
Transaction User (TU): The layer of protocol processing that
resides above the transaction layer. Transaction users
include the UAC core, UAS core, and proxy core.
Upstream: A direction of message forwarding within a comma-separated list (i.e., #(values)).
It MUST be possible transaction
that refers to combine the multiple header fields into one
"field-name: field-value" pair, without changing direction that responses flow from the semantics of
user agent server to user agent client.
URL-encoded: A character string encoded according to RFC 1738,
Section 2.2 [10].
User agent client (UAC): A user agent client is a logical entity
that creates a new request, and then uses the
message, by appending each subsequent field-value client
transaction state machinery to send it. The role of UAC
lasts only for the first, each
separated by duration of that transaction. In other
words, if a comma.
Implementations MUST be able to process multiple header fields with piece of software initiates a request, it acts
as a UAC for the same name in any combination duration of that transaction. If it
receives a request later on, it assumes the single-value-per-line or
comma-separated value forms. role of a user
agent server for the processing of that transaction.
UAC Core: The following blocks set of headers are valid and equivalent:
Route: sip:alice@atlanta.com
Subject: Lunch
Route: sip:bob@biloxi.com
Route: sip:carol@chicago.com
Various Authors [Page 21]
Internet Draft SIP October 26, 2001
Route: sip:alice@atlanta.com, sip:bob@biloxi.com
Route: sip:carol@chicago.com
Subject: Lunch
Subject: Lunch
Route: sip:alice@atlanta.com, sip:bob@biloxi.com, sip:carol@chicago.com
Each processing functions required of a UAC that
reside above the following blocks transaction and transport layers.
User agent server (UAS): A user agent server is valid but not equivalent a logical entity
that generates a response to the
others:
Route: sip:alice@atlanta.com
Route: sip:bob@biloxi.com
Route: sip:carol@chicago.com
Route: sip:bob@biloxi.com
Route: sip:alice@atlanta.com
Route: sip:carol@chicago.com
Route: sip:alice@atlanta.com,sip:carol@chicago.com,sip:bob@biloxi.com
The format of a header field-value is defined per header-name. It
will always be either an opaque sequence of TEXT-UTF8 octets, SIP request. The response
accepts, rejects or a
combination redirects the request. This role lasts
only for the duration of whitespace, tokens, separators, and quoted strings.
Many that transaction. In other words,
if a piece of them will adhere software responds to a request, it acts as a
UAS for the general form duration of that transaction. If it generates a value followed by a
semi-colon separated sequence
request later on, it assumes the role of parameter-name, parameter-value
pairs:
field-name: field-value *(;parameter-name=parameter-value)
When comparing headers, field names are always case-insensitive.
Unless otherwise stated in a user agent
client for the definition processing of that transaction.
UAS Core: The set of processing functions required at a particular header
field, field values, parameter names, UAS that
reside above the transaction and parameter values (tokens in
general) are case-insensitive. Unless specified otherwise, values
expressed as quoted strings are case-sensitive.
The following are equivalent:
Contact: <sip:alice@atlanta.com>;expires=3600
CONTACT: <sip:alice@atlanta.com>;ExPiReS=3600
Contact-Disposition: session;handling=optional
contact-disposition: Session;HANDLING=OPTIONAL transport layers.
Various Authors [Page 22] 18]
Internet Draft SIP October 26, 2001
The following are not equivalent;
Warning: 370 devnull "Choose a bigger pipe"
Warning: 370 devnull "CHOOSE January 28, 2002
User agent (UA): A BIGGER PIPE"
7.3.2 Header Field Classification
Some header fields only make sense in requests or responses. These
are called Request Header Fields and Response Header fields
respectively. Those header fields logical entity that can appear in either act as both a
request or response user
agent client and user agent server for the duration of a
dialog.
The role of UAC and UAS as well as proxy and redirect servers are called General Header Fields. If
defined on a header
appears in transaction-by-transaction basis. For example, the user
agent initiating a message not matching its category (such call acts as a UAC when sending the initial INVITE
request
header in and as a response), it MUST be ignored. Section 22 defines UAS when receiving a BYE request from the
classification of each header.
7.3.3 Compact Form callee.
Similarly, the same software can act as a proxy server for one
request and as a redirect server for the next request.
Proxy, location, and registrar servers defined above are logical
entities; implementations MAY combine them into a single application.
7 SIP provides Messages
SIP is a mechanism to represent common header fields text-based protocol and uses the ISO 10646 character set in an
abbreviated form. This may be useful when messages would otherwise
become
UTF-8 encoding (RFC 2279 [11]).
A SIP message is either a request from a client to large a server, or a
response from a server to be carried on a client.
Both Request (section 7.1) and Response (section 7.2) messages use
the transport available to it
(exceeding basic format of RFC 2822 [7], even though the MTU when using UDP for example). These compact forms
are defined syntax differs in Section 22. A compact form MAY
character set and syntax specifics. (SIP allows header fields that
would not be substituted valid RFC 2822 header fields, for the
longer form example.) Both types
of a header name at any time without changing the
semantics messages consist of a the message. Multiple start-line, one or more header fields in a message with
the same header name MAY appear with (also
known as "headers"), an arbitrary mix of its long and
short field name form. Implementations MUST accept both empty line indicating the long and
short forms end of each header name.
7.4 Bodies
Requests, including new requests defined in extensions to this
specification, MAY contain message bodies unless otherwise noted.
For response messages, the request method and the response status
code determine the type header
fields, and interpretation of any message body. All
responses MAY include a body.
7.4.1 Message Body Type an optional message-body.
generic-message = start-line
*message-header
CRLF
[ message-body ]
The Internet media type of start-line, each message-header line, and the message body empty line MUST be given
terminated by a carriage-return line-feed sequence (CRLF). Note that
the
Content-Type header field. If the body has undergone any encoding
(such as compression) then this empty line MUST be indicated by present even if the Content-
Encoding header field, otherwise Content-Encoding MUST be omitted. If
applicable, message-body is not.
Except for the above difference in character set sets, much of the SIP's
message body and header field syntax is indicated as
part identical to HTTP/1.1. Rather than
repeating the syntax and semantics here, we use [HX.Y] to refer to
Section X.Y of the Content-Type header-field value. current HTTP/1.1 specification (RFC 2616 [12]).
However, SIP is not an extension of HTTP.
Various Authors [Page 23] 19]
Internet Draft SIP October 26, 2001
The "multipart" MIME type defined in RFC 2046 [14] MAY be used within
the body of the message.
Implementations that send January 28, 2002
7.1 Requests
SIP requests containing multipart message
bodies MUST be able to send are distinguished by having a session description as Request-Line for a non-multipart
message body if start-
line. A Request-Line contains a method name, a Request-URI, and the remote implementation requests this through an
Accept header field.
7.4.2 Message Body Length
protocol version separated by a single space (SP) character. The body length
Request-Line ends with CRLF. No CR or LF are allowed except in bytes the
end-of-line CRLF sequence. No LWS is provided by allowed in any of the Content-Length header
field. elements.
Method Request-URI SIP-Version
Method:
This specification defines seven methods: REGISTER for
registering contact information, INVITE, ACK, PRACK and
CANCEL for setting up sessions, BYE for terminating
sessions and OPTIONS for querying servers about their
capabilities. SIP extensions, documented in standards track
RFCs, may define additional methods.
Request-URI: The Request-URI is a SIP URI as described in
Section 22.14 describes 23.1 or a general URI (RFC 2396 [9]). It indicates
the necessary contents of user or service to which this header
in detail. request is being
addressed. The "chunked" transfer encoding of HTTP/1.1 Request-URI MUST NOT contain unescaped
spaces or control characters and MUST NOT be used enclosed in
"<>".
SIP elements MAY support Request-URIs with schemes other
than "sip", for SIP.
(Note: The chunked encoding modifies example the body "tel" URI scheme of a message RFC 2806
[13]. SIP elements MAY translate non-SIP URIs using any
mechanism at their disposal, resulting in order
to transfer it as either a series of chunks, each with its own size
indicator.)
7.5 Framing SIP messages
Unlike HTTP, SIP MAY use UDP URI
or some other unreliable datagram protocols.
Each such datagram carries one scheme.
SIP-Version: Both request or response. Datagrams,
including all headers, SHOULD NOT be larger than the path maximum
transmission unit (MTU) if the MTU is known, or 1500 bytes if the MTU
is unknown. However, implementations MUST be able to handle and response messages
up to the maximum datagram packet size. For UDP, this size is 65,535
bytes, including headers.
The MTU of 1500 bytes accommodates encapsulation within include the
"typical" ethernet MTU without IP fragmentation. Recent
studies [15] indicate that an MTU
version of 1500 bytes is a
reasonable assumption. The next lower common MTU values are
1006 bytes for SLIP SIP in use, and 296 for low-delay PPP (RFC 1191
[16]). Thus, another reasonable value would be a message
size of 950 bytes, to accommodate packet headers within the
SLIP MTU without fragmentation.
In the interest follow [H3.1] (with HTTP
replaced by SIP, and HTTP/1.1 replaced by SIP/2.0)
regarding version ordering, compliance requirements, and
upgrading of robustness, any leading empty line(s) MUST version numbers. To be
ignored. In other words, if the Request or Response message begins compliant with one or more CRLF, CR, or LFs, these characters MUST be ignored.
Likewise, Implementations processing this
specification, applications sending SIP messages over stream
oriented transports MUST ignore noise between messages.
8 General User Agent Behavior
include a SIP-Version of "SIP/2.0". The SIP-Version string
is case-insensitive, but implementations MUST send upper-
case.
Unlike HTTP/1.1, SIP treats the version number as a
literal string. In practice, this should make no
difference.
7.2 Responses
Various Authors [Page 24] 20]
Internet Draft SIP October 26, 2001
A user agent represents an end system. It contains January 28, 2002
SIP responses are distinguished from requests by having a User Agent
Client (UAC), which generates requests, and a User Agent Server (UAS)
which responds to them. Status-Line
as their start-line. A UAC is capable Status-Line consists of generating a request
based on some external stimulus (the user clicking a button, or a
signal on the protocol version
followed by a PSTN line), numeric Status-Code and processing its associated textual phrase,
with each element separated by a response. A UAS single SP character. No CR or LF is capable
of receiving a request, and generating response, based on user input,
external stimulus,
allowed except in the final CRLF sequence.
SIP-version Status-Code Reason-Phrase
The Status-Code is a 3-digit integer result code that indicates the
outcome of an attempt to understand and satisfy a program execution, or some other
mechanism.
When a UAC sends request. The
Reason-Phrase is intended to give a request, it will pass through some number short textual description of proxy
servers, which forward the request towards the UAS. When the UAS
generates a response, the response
Status-Code. The Status-Code is forwarded towards intended for use by automata, whereas
the UAC.
UAC and UAS procedures depend strongly on two factors. First, whether Reason-Phrase is intended for the request or response human user. A client is inside not
required to examine or outside of a dialog, and second,
based on display the method of a request. Dialogs are discussed thoroughly in
Section 12; they represent a peer-to-peer relationship between user
agents, and are established by specific SIP methods, such as INVITE.
In Reason-Phrase. While this section, we discuss the method independent rules
specification suggests specific wording for UAC and
UAS behavior when processing of requests that are outside of a
dialog. This includes, of course, the requests which themselves
establish a dialog.
8.1 UAC Behavior
8.1.1 Generating the Request
A valid SIP request formulated by a UAC MUST at a minimum contain reason phrase,
implementations MAY choose other text, e.g., in the
following headers: To, From, CSeq, Call-ID, and Via; all of these
headers are mandatory language
indicated in all SIP messages. These five headers are the
fundamental building blocks of a SIP message, as they jointly provide
for most Accept-Language header field of the critical message routing services including the
addressing request.
The first digit of messages, the routing of responses, ordering of
messages, and Status-Code defines the unique identification of transactions.
Examples of requests send outside class of response. The
last two digits do not have any categorization role. For this reason,
any response with a dialog include an INVITE status code between 100 and 199 is referred to
establish as
a session (Section 13) "1xx response", any response with a status code between 200 and an OPTIONS to query for
capabilities (Section 11).
8.1.1.1 To
The To general-header field first 299
as a "2xx response", and foremost specifies so on. SIP/2.0 allows six values for the desired
"logical" recipient of
first digit:
1xx: Provisional -- request received, continuing to process the request, or
request;
2xx: Success -- the address of record of action was successfully received,
understood, and accepted;
3xx: Redirection -- further action needs to be taken in order to
complete the
user or resource that is request;
4xx: Client Error -- the target of this request. This may request contains bad syntax or may
not cannot
be fulfilled at this server;
5xx: Server Error -- the ultimate recipient of the request. The To header MAY
contain a SIP URI, but it may also make use of other URI schemes (for
example as server failed to fulfill an apparently
valid request;
6xx: Global Failure -- the tel URL [13]) when appropriate. The To request cannot be fulfilled at any
server.
Section 25 defines these classes and describes the individual codes.
7.3 Header Fields
SIP header field fields are similar to HTTP header fields in both syntax
Various Authors [Page 25] 21]
Internet Draft SIP October 26, 2001
allows January 28, 2002
and semantics. In particular, SIP header fields follow the [H4.2]
definitions of syntax for a display name; this is meant to contain a descriptive
version message-header, the rules for extending
header fields over multiple lines, the use of multiple message-header
fields with the URI, same field-name, and is intended to be displayed to a user
interface.
A UAC may learn how to populate the To rules regarding ordering of
header field for a particular
request fields.
7.3.1 Header Field Format
Header fields follow the same generic header format as that given in a number
Section 2.2 of ways. Usually the user will suggest the To RFC 2822 [7]. Each header field through a human interface, perhaps inputting the URI
manually or selecting it from some sort of address book.
A request outside consists of a dialog MUST NOT contain field
name followed by a tag; colon (":") and the tag field value.
field-name: field-value
The formal grammar for a message-header specified in Section 27
allows for an arbitrary amount of whitespace on either side of the
colon; however, implementations should avoid spaces between the
To field of
name and the colon and use a request identifies single space (SP) between the peer of colon and
the dialog. Since no
dialog is established, no tag is present.
For further information on field-value. Thus,
Subject: lunch
Subject : lunch
Subject :lunch
Subject: lunch
are all valid and equivalent, but the To header see Section 22.37.
The following last is an example of valid To header:
To: Carol <sip:carol@chicago.com>
8.1.1.2 From the preferred form.
Header fields can be extended over multiple lines by preceding each
extra line with at least one SP or horizontal tab (HT). The From general-header field indicates line
break and the logical identity of whitespace at the
initiator beginning of the request, possibly next line are
treated as a single SP character. Thus, the user's address of record. Like following are equivalent:
Subject: I know you're there, pick up the To field, it contains a URI phone and optionally a display name. It is
used by SIP elements to determine processing rules talk to apply me!
Subject: I know you're there,
pick up the phone
and talk to a
request (for example, automatic call rejection). As such, me!
The relative order of header fields with different field names is not
significant. However, it is very
important RECOMMENDED that the URI not contain IP addresses or host names, since
these headers which are not logical names.
The From header field allows
needed for a display name; this is meant to
contain a descriptive version of the URI, proxy processing (Via, Route, Record-Route, Proxy-Require,
Max-Forwards, and is intended to be
displayed to a user interface. A UAC SHOULD use the display name
"Anonymous" if Proxy-Authorization, for example) appear towards
the identity top of the client is message, to remain hidden.
Usually the value that populates the From facilitate rapid parsing. The relative
order of header fields with the same field in requests
generated by a particular user agent name is pre-provisioned by the user
or by the administrators of important.
Multiple header fields with the user's local domain. If a particular
user agent is used by multiple users, it might have switchable
profiles that include same field-name MAY be present in a URI corresponding to the identity of the
profiled user. Recipients of requests can authenticate
message if and only if the originator
of a request in order to ascertain entire field-value for that they are who their From header field claims they are (see Section 20.2 for more on
authentication).
The From field MUST contain a new "tag" parameter, chosen by the UAC.
See Section 21.3 for details on choosing
is defined as a tag. comma-separated list (that is, #(values)). It MUST be
Various Authors [Page 26] 22]
Internet Draft SIP October 26, 2001
For further information on January 28, 2002
possible to combine the From multiple header see Section 22.20.
Examples:
From: "Bob" <sip:bob@biloxi.com> ;tag=a48s
From: sip:+12125551212@server.phone2net.com;tag=887s
From: Anonymous <sip:c8oqz84zk7z@privacy.org>;tag=hyh8
8.1.1.3 Call-ID
The Call-ID general-header field acts as a unique identifier to group
together series fields into one "field-name:
field-value" pair, without changing the semantics of messages. It is always the same for all requests
and responses sent message, by either UA in a dialog. It is also
appending each subsequent field-value to the same in first, each registration from a UA within a single boot cycle.
In a new request created separated by
a UAC outside of any dialog, unless
overridden by method specific behavior, it comma.
Implementations MUST be selected by the
UAC as a a globally unique identifier over space and time; all SIP
user agents must have a means able to guarantee that process multiple header fields with
the Call-ID headers
they produce will not be inadvertently generated by same name in any other user
agent.
Use combination of cryptographically random identifiers [17] in the generation single-value-per-line or
comma-separated value forms.
The following groups of
Call-IDs is RECOMMENDED. Implementations MAY use the form
"localid@host". Call-IDs are case-sensitive and header fields are simply compared
byte-by-byte.
Using cryptographically random identifiers provides some
protection against session hijacking, valid and reduces the
likelihood equivalent:
Route: <sip:alice@atlanta.com>
Subject: Lunch
Route: <sip:bob@biloxi.com>
Route: <sip:carol@chicago.com>
Route: <sip:alice@atlanta.com>, <sip:bob@biloxi.com>
Route: <sip:carol@chicago.com>
Subject: Lunch
Subject: Lunch
Route: <sip:alice@atlanta.com>, <sip:bob@biloxi.com>, <sip:carol@chicago.com>
Each of unintentional Call-ID collisions.
No provisioning or human interface the following blocks is required for valid but not equivalent to the selection
others:
Route: <sip:alice@atlanta.com>
Route: <sip:bob@biloxi.com>
Route: <sip:carol@chicago.com>
Route: <sip:bob@biloxi.com>
Route: <sip:alice@atlanta.com>
Route: <sip:carol@chicago.com>
Route: <sip:alice@atlanta.com>,<sip:carol@chicago.com>,<sip:bob@biloxi.com>
The format of
the Call-ID a header field value for field-value is defined per header-name. It
will always be either an opaque sequence of TEXT-UTF8 octets, or a request.
For further information on
combination of whitespace, tokens, separators, and quoted strings.
Many existing headers will adhere to the Call-ID header see Section 22.8.
Example:
Call-ID: f81d4fae-7dec-11d0-a765-00a0c91e6bf6@foo.bar.com
8.1.1.4 CSeq general form of a value
followed by a semi-colon separated sequence of parameter-name,
parameter-value pairs:
field-name: field-value *(;parameter-name=parameter-value)
Various Authors [Page 27] 23]
Internet Draft SIP October 26, 2001
The Cseq header serves as a way to identify and order transactions.
It consists of a sequence January 28, 2002
Even though an arbitrary number and a method. The method MUST match
that of the request. The sequence number value is arbitrary, but MUST parameter pairs may be expressible as attached to
a 32-bit unsigned integer and header field value, any given parameter-name MUST be less NOT appear more
than
2**31.
As long as it follows once.
All new header fields MUST follow this generic format unless they
have been inherited from other RFC 2822-like specifications.
When comparing header fields, field names are always case-
insensitive. Unless otherwise stated in the above guidelines, definition of a client may use any
mechanism it would like to select CSeq
particular header field, field values. values, parameter names, and parameter
values are case-insensitive. Tokens are always case-insensitive.
Unless specified otherwise, values expressed as quoted strings are
case-sensitive.
For further information on the CSeq header see Section 22.16.
Example:
CSeq: 4711 INVITE
8.1.1.5 Via
The Via header example,
Contact: <sip:alice@atlanta.com>;expires=3600
is used to determine the transport equivalent to use for sending
a request, and for identifying the IP address
CONTACT: <sip:alice@atlanta.com>;ExPiReS=3600
and port where the
response
Content-Disposition: session;handling=optional
is equivalent to be sent. Rules for setting
content-disposition: Session;HANDLING=OPTIONAL
The following two header fields are not equivalent:
Warning: 370 devnull "Choose a bigger pipe"
Warning: 370 devnull "CHOOSE A BIGGER PIPE"
7.3.2 Header Field Classification
Some header fields only make sense in requests or responses. These
are called request header fields and using the values response header fields,
respectively. If a header appears in
this a message not matching its
category (such as a request header are described field in a response), it MUST be
Various Authors [Page 24]
Internet Draft SIP January 28, 2002
ignored. Section 19.
For further information on 24 defines the Via header see Section 22.40.
8.1.1.6 Contact
The Contact classification of each header field.
7.3.3 Compact Form
SIP provides a SIP URI that can mechanism to represent common header fields in an
abbreviated form. This may be used useful when messages would otherwise
become too large to contact
that specific instance of be carried on the user agent transport available to it
(exceeding the maximum transmission unit (MTU) when using UDP, for subsequent requests. The
Contact header MUST be present in any request that can result
example). These compact forms are defined in Section 24. A compact
form MAY be substituted for the
establishment longer form of a dialog. For header name at any
time without changing the methods semantics of the message. The same type of
header field MAY appear in both long and short forms within the same
message. Implementations MUST accept both the long and short forms of
each header name.
7.4 Bodies
Requests, including new requests defined in extensions to this
specification, that includes only the INVITE request. For these
requests, the scope MAY contain message bodies unless otherwise noted.
The interpretation of the Contact is body depends on the dialog. That is, request method.
For response messages, the
Contact header refers to request method and the URL that response status
code determine the UA would like to receive
requests at, for requests that are part type and interpretation of that dialog only. Only any message body. All
responses MAY include a
single URI MUST be present.
For further information on the Contact header, see Section 22.10.
8.1.1.7 Request-URI body.
7.4.1 Message Body Type
The initial Request-URI Internet media type of the message SHOULD body MUST be set to the value of
the URI in given by the To
Content-Type header field. One notable exception is If the REGISTER
method; behavior for setting body has undergone any encoding
such as compression, then this MUST be indicated by the Request-URI Content-
Encoding header field; otherwise, Content-Encoding MUST be omitted.
If applicable, the character set of register the message body is given indicated as
part of the Content-Type header-field value.
The "multipart" MIME type defined in
Section 10. Another exception is RFC 2046 [14] MAY be used within
the case body of pre-existing Route
headers; in the message. Implementations that case, send requests
containing multipart message bodies MUST send a session description
as a non-multipart message body if the procedures of remote implementation requests
this through an Accept header field that does not contain multipart.
Note that SIP messages MAY contain binary bodies or body parts.
7.4.2 Message Body Length
The body length in bytes is provided by the Content-Length header
field. Section 12.2.1.1 as they 24.14 describes the necessary contents of this header
in detail.
Various Authors [Page 28] 25]
Internet Draft SIP October 26, 2001
pertain to the Request- URI are followed, even though there is no
dialog.
8.1.1.8 Supported and Require
If the UAC supports extensions to SIP that can January 28, 2002
The "chunked" transfer encoding of HTTP/1.1 MUST NOT be applied by the
server to the response, the UAC SHOULD include a Supported header in
the request listing the option tags used for those extensions. SIP.
(Note: The option-tags listed MUST only refer to extensions defined in
standards track RFCs. This is to prevent servers from insisting that
clients implement non-standard, vendor defined features chunked encoding modifies the body of a message in order
to
receive service. Extensions defined by experimental and informational
RFCs are explicitly excluded from usage transfer it as a series of chunks, each with its own size
indicator.)
7.5 Framing SIP messages
Unlike HTTP, SIP implementations can use UDP or other unreliable
datagram protocols. Each such datagram carries one request or
response. See Section 19 on constraints on usage of unreliable
transports.
Likewise, implementations processing SIP messages over stream-
oriented transports MUST ignore any CRLF appearing before the Supported header in start-
line [H4.1]
8 General User Agent Behavior
A user agent represents an end system. It contains a request, since they too are often used User Agent
Client (UAC), which generates requests, and a User Agent Server (UAS)
which responds to document vendor defined
extensions.
If the them. A UAC wishes to insist that is capable of generating a request
based on some external stimulus (the user clicking a button, or a
signal on a PSTN line), and processing a response. A UAS understand an extension that is capable
of receiving a request, and generating a response, based on user
input, external stimulus, the result of a program execution, or some
other mechanism.
When a UAC sends a request, it will apply to pass through some number of proxy
servers, which forward the request in order to process towards the request, it
MUST insert a Require header into UAS. When the request listing UAS
generates a response, the option tag
for that extension. If response is forwarded towards the UAC.
UAC wishes to apply an extension to the
request and insist that a proxy understand that extension, it MUST
insert a Proxy-Require header into UAS procedures depend strongly on two factors. First, whether
the request listing the option tag
for that extension.
8.1.1.9 Additional Message Components
After or response is inside or outside of a new request has been created, dialog, and second,
based on the headers described above
have been properly constructed, any additional optional headers method of a request. Dialogs are
added, as discussed thoroughly in
Section 12; they represent a peer-to-peer relationship between user
agents, and are any headers established by specific to the method. SIP requests MAY contain a MIME-encoded message-body. Regardless of methods, such as INVITE.
In this section, we discuss the type of body method independent rules for UAC and
UAS behavior when processing requests that are outside of a request contains, certain headers must be
formulated to characterize the contents dialog.
This includes, of course, the body. For further
information on these headers see Section 7.4.
8.1.2 Sending the Request
The destination for the request is then computed. This can be requests which themselves establish a
preconfigured IP address, port
dialog.
Security procedures for requests and transport responses outside of an outbound proxy, or
it can be determined through DNS procedures applied to the Request-
URI. These procedures a dialog
are described in Section 24, which yield an
ordered set of address, port and transports to attempt. The UAC
SHOULD follow the procedures defined there 22. Specifically, mechanisms exist for stateful elements,
trying each address until a server is contacted. Each try constitutes
a new transaction, the
UAS and therefore a new client transaction MUST be
constructed for each. UAC to mutually authenticate. A limited set of privacy
features are also supported through encryption of bodies using
S/MIME.
Various Authors [Page 29] 26]
Internet Draft SIP October 26, 2001
8.1.3 Processing Responses
Responses are first processed by the transport layer, and then passed
up to the transaction layer. The transaction layer performs its
processing, and then passes it up to the TU. The majority of response
processing in the TU is method specific. However, there are some
general behaviors independent January 28, 2002
8.1 UAC Behavior
This section covers UAC behavior outside of a dialog.
8.1.1 Generating the method.
8.1.3.1 Unrecognized Responses Request
A valid SIP request formulated by a UAC MUST treat any response they do not recognize as being
equivalent to at a minimum contain the x00 response code of that class,
following headers: To, From, CSeq, Call-ID, Max-Forwards, and MUST be able
to process the x00 response code for Via;
all classes. For example, if a
UAC receives an unrecognized response code of 431, it can safely
assume that there was something wrong with its request and treat the
response as if it had received a 400 (Bad Request) response code.
8.1.3.2 Vias
If more than one Via header field is present these headers are mandatory in all SIP messages. These six
headers are the fundamental building blocks of a response, SIP message, as they
jointly provide for most of the UAC
SHOULD discard critical message routing services
including the message.
The presence addressing of additional Via header fields that precede messages, the originator routing of the request suggests that the responses,
limiting message was
misrouted or possibly corrupted.
8.1.3.3 Processing 3xx responses
Upon receipt propagation, ordering of a redirection response (e.g. a 3xx response status
code), clients SHOULD use messages, and the URI(s) unique
identification of transactions. These headers are in the Contact header field addition to
formulate a new request.
To do that, the client copies all but
mandatory request line, which contains the "method-param" method, Request-URI and "header"
elements of the addr-spec part
SIP version.
Examples of the Contact header field into the
Request-URI requests sent outside of the request. It uses the "header" parameters a dialog include an INVITE to create
headers
establish a session (Section 13) and an OPTIONS to query for the request, replacing any default headers normally used.
In all other respects, requests sent upon receipt
capabilities (Section 11).
8.1.1.1 Request-URI
The initial Request-URI of a redirect
response the message SHOULD re-use be set to the headers and bodies value of
the original
request.
The Contact values present URI in redirection responses SHOULD NOT be
cached across calls, as they may not represent the most desirable
location To field. One notable exception is the REGISTER
method; behavior for a particular destination address.
8.1.3.4 Processing 4xx responses
Certain 4xx response codes require specific UA processing,
Various Authors [Page 30]
Internet Draft SIP October 26, 2001
independent of setting the method.
If a 401 or 407 response Request-URI of register is given in
Section 10.
Another exception is received, the UAC SHOULD follow case of pre-existing Route headers; in that
case, the
authorization procedures of Section 20.2.2 and Section 20.2.3 12.2.1.1 as they pertain to
retry the request with credentials.
If a 413 response
Request-URI are followed, even though there is received (Section 23.4.11), it means no dialog. Pre-
existing Route headers are an ordered set of URIs that the
request contained identify a body that was longer than the UAS was willing
chain of servers to
accept. If possible, the which outgoing requests from a UAC SHOULD retry the request, either
omitting will be sent.
Commonly, they are configured on the body user agent by a user or using one of service
provider manually, or through some non-SIP mechanism. They are most
often used to identify a smaller length.
If local outbound proxy server through which a 415 response is received (Section 23.4.13), it means the request
contained media types not supported by the UAS. The
UAC SHOULD retry
sending the request, this time only using content with types listed
in the Accept header in the response, with encodings listed in the
Accept-Encoding header in the response, and with languages listed in
the Accept-Language will send all requests, which in the response.
If a 420 response is received (Section 23.4.14), it means the request
contained turn allows service providers to
maintain a Require or Proxy-Require header listing an option-tag common point of policy enforcement for
a feature not supported by a proxy or UAS. requests.
8.1.1.2 To
The UAC SHOULD retry the
request, this time omitting any extensions listed in the Unsupported
header in To general-header field first and foremost specifies the response.
In all desired
"logical" recipient of the above cases, retrying the request is accomplished by
creating a new request with the appropriate modifications. This new
request SHOULD have request, or the same value address of the Call-ID, To, and From record of the previous request, but the CSeq should contain a new sequence
number
user or resource that is one higher than the previous.
With other 4xx responses, a retry target of this request. This may or may
not be possible
depending on the method and the use case.
8.2 UAS Behavior
When a request outside of a dialog is processed by a UAS, there are a
set of processing rules which are followed, independent ultimate recipient of the
method. Section 12 gives guidance on how a UAS can tell whether a
request is inside or outside of a dialog.
8.2.1 Authentication/Authorization
A UAS request. The To header MAY authenticate the originator of
contain a request, and this process SIP URI, but it may require the server to issue a challenge for credentials. The
required behavior is independent of the method also make use of other URI schemes (the
tel URL [13], for example) when appropriate. All SIP implementations
MUST support the request, and is
detailed in Section 20.2.
8.2.2 Method Inspection SIP URI. The To header field allows for a display
Various Authors [Page 31] 27]
Internet Draft SIP October 26, 2001
Once January 28, 2002
name.
A UAC may learn how to populate the To header field for a particular
request is authenticated (or no authentication was desired), in a number of ways. Usually the UAS MUST inspect user will suggest the method of To
header field through a human interface, perhaps inputting the request. If URI
manually or selecting it from some sort of address book. Frequently,
the UAS does user will not
support enter a complete URI, but rather, a string of
digits or letters (i.e., "bob"). It is at the method discretion of a request the UA to
choose how to interpret this input. Using it MUST generate to form the user part of
a 405 (Method Not
Allowed) response. Procedures for generation SIP URL implies that the UA wishes the name to be resolved in the
domain the right hand side (RHS) of responses are
described the at-sign in Section 8.2.7. The UAS MUST also add an Allow header to the 405 response. SIP URI (i.e.,
sip:bob@example.com). The Allow header field MUST list RHS will frequently be the set home domain of methods
supported by
the UAS generating user, which allows for the message.
The Allow header home domain to process the outgoing
request. This is presented useful for features like "speed dial" which require
interpretation of the user part in Section 22.5.
If the method home domain. The tel URL is one supported by
used when the server, processing continues.
8.2.3 Header Inspection
If a UAS UA does not understand wish to specify the domain that should
interpret the user input. Rather, each domain that the request passes
through would be given that opportunity. As an example, a header field user in an
airport might log in, and send requests through an outbound proxy in a request (i.e.
the
header airport. If they enter "411" (this is not defined in this specification or the phone number for local
directory assistance in any supported
extension), the server MUST ignore United States), that header needs to be
interpreted and continue
processing processed by the message. A UAS SHOULD ignore any malformed headers
which are outbound proxy in the airport, not necessary for processing requests.
8.2.3.1 To and Request-URI
The
the user's home domain. In this case, tel:411 would be the right
choice.
A request outside of a dialog MUST NOT contain a tag; the tag in the
To header field of a request identifies the original recipient peer of the request
designated by the user identified in dialog. Since no
dialog is established, no tag is present.
For further information on the To header see Section 24.41.
The following is an example of valid To header:
To: Carol <sip:carol@chicago.com>
8.1.1.3 From field.
The original
recipient may or may not be From general-header field indicates the UAS processing logical identity of the request, do to
call forwarding or other proxy operations. A UAS MAY apply any policy
it wishes in determination
initiator of whether to accept requests when the To
field is not request, possibly the identity user's address of record. Like
the UAS. However, To field, it is RECOMMENDED that contains a UAS accept requests even if they do not recognize the URI scheme
(e.g., a tel: URI) in the To header, or if the To header does not
address and optionally a known or current user of this UAS. If, on the other hand,
the UAS decides display name. It is
used by SIP elements to determine processing rules to apply to reject the request, it SHOULD generate a response
with a 403 status code and send
request (for example, automatic call rejection). As such, it to the server transaction for
transmission.
However, the Request-URI identifies the UAS that is to process the
request. If the Request-URI does not identify an address very
important that the UAS
is willing to accept requests for, it SHOULD reject From URI not contain IP addresses or the request with
a 404 (Not Found) response. If FQDN of
the Request-URI does not provide
sufficient information for host the UAS to determine whether it UA is willing
to process the request, it SHOULD return a 485 (Ambiguous) response.
This response SHOULD contain a Contact running on, since these are not logical names.
The From header field containing URIs
of new addresses to be tried.
Typically, allows for a UA which uses display name. A UAC SHOULD use the REGISTER method to bind its address of
record to a specific contact address, will see requests whose
Request-URI equals those contact addresses.
Various Authors [Page 32] 28]
Internet Draft SIP October 26, 2001
8.2.3.2 Require
Assuming January 28, 2002
display name "Anonymous", along with a syntactically correct, but
otherwise meaningless URI (like sip:988776a@ahhs.aa), if the UAS decides that it is identity
of the proper element client is to process remain hidden.
Usually the
request, it examines value that populates the Require From header field, if present.
The Require general-header field in requests
generated by a particular user agent is used pre-provisioned by UAC to tell UAS about SIP
extensions that the UAC expects user
or by the UAS to support in order to
properly process administrators of the request. user's local domain. If a UAS does not understand an option
listed in a Require header field, it MUST respond particular
user agent is used by generating a
response with status code 420 (Bad Extension). The UAS MUST add a
Unsupported, and list in it those options multiple users, it does not understand
amongst those in might have switchable
profiles that include a URI corresponding to the Require header identity of the request. Upon receipt
profiled user. Recipients of requests can authenticate the 420 the client SHOULD retry the request, this time without using
those extensions listed in the Unsupported header originator
of a request in the response.
Example:
UACC->UAS: INVITE sip:watson@bell-telephone.com SIP/2.0
Require: com.example.billing
Payment: sheep_skins, conch_shells
UASS->UAC: SIP/2.0 420 Bad Extension
Unsupported: com.example.billing
This is order to make sure ascertain that the client-server interaction
will proceed without delay when all options they are understood
by both sides, and only slow down if options who their From
header field claims they are not
understood (as in the example above). For a well-matched
client-server pair, the interaction proceeds quickly,
saving (see Section 20 for more on
authentication).
The From field MUST contain a round-trip often required new "tag" parameter, chosen by negotiation
mechanisms. In addition, it also removes ambiguity when the
client requires features that the server does not
understand. Some features, such as call handling fields,
are only of interest to end systems.
8.2.4 Content Processing
Assuming UAC.
See Section 23.3 for details on choosing a tag.
For further information on the UAS understands any extensions required by the client,
the UAS examines the body From header see Section 24.20.
Examples:
From: "Bob" <sip:bob@biloxi.com> ;tag=a48s
From: sip:+12125551212@server.phone2net.com;tag=887s
From: Anonymous <sip:c8oqz84zk7z@privacy.org>;tag=hyh8
8.1.1.4 Call-ID
The Call-ID general-header field acts as a unique identifier to group
together a series of messages. It MUST be the message, same for all requests
and responses sent by either UA in a dialog. It SHOULD be the headers that
describe it. If there are any bodies whose type (indicated same in
each registration from a UA.
In a new request created by a UAC outside of any dialog, the
Content-Type), language (indicated Call-ID
header MUST be selected by the Content-Language) or
encoding (indicated UAC as a globally unique identifier
over space and time unless overridden by method specific behavior.
All SIP user agents must have a means to guarantee that the Content-Encoding) Call-ID
headers they produce will not be inadvertently generated by any other
user agent. Note that when requests are retried after certain
failure responses that solicit an amendment to a request (for
example, a challenge for authentication), these retried requests are
not understood, considered new requests, and
that body part is therefore do not optional (as indicated by the Content-
Disposition) header, need new Call-ID
headers; see Section 8.1.4.6.
Use of cryptographically random identifiers [15] in the UAS MUST reject generation of
Call-IDs is RECOMMENDED. Implementations MAY use the request with a 415
(Unsupported Media Type) response. The response MUST contain a Accept form
Various Authors [Page 33] 29]
Internet Draft SIP October 26, 2001
header listing January 28, 2002
"localid@host". Call-IDs are case-sensitive and are simply compared
byte-by-byte.
Using cryptographically random identifiers provides some
protection against session hijacking and reduces the types
likelihood of all bodies it understands, in the event unintentional Call-ID collisions.
No provisioning or human interface is required for the request contained bodies selection of types not supported by the UAS. If
the request contained content encodings not understood by the UAS,
the response MUST contain an Accept-Encoding header listing the
encodings understood by the UAS. If the request contained content
with languages not understood by the UAS, the response MUST contain
an Accept-Language Call-ID header indicating the languages understood by the
UAS.
Beyond these checks, body handling is method and type specific. field value for a request.
For further information on the processing of Content-specific headers Call-ID header see Section 7.4.
8.2.5 Applying Extensions
A UAS that wishes 24.8.
Example:
Call-ID: f81d4fae-7dec-11d0-a765-00a0c91e6bf6@foo.bar.com
8.1.1.5 CSeq
The Cseq header serves as a way to apply some extension when generating the
response identify and order transactions.
It consists of a sequence number and a method. The method MUST only do so if support for match
that extension is indicated
in the Supported header in of the request. If For requests outside of a dialog, the desired extension sequence
number value is
not supported, the server SHOULD rely only on baseline SIP arbitrary, but MUST be expressible as a 32-bit
unsigned integer and any
other extensions supported by the client. To ensure that the SHOULD
can MUST be fulfilled, less than 2**31. As long as it follows
the above guidelines, a client may use any specification mechanism it would like to
select CSeq header field values.
Section 12.2.1.1 discusses construction of the CSeq for requests
within a new extension MUST include
discussion of how to gracefully return dialog.
Example:
CSeq: 4711 INVITE
8.1.1.6 Max-Forwards
The Max-Forwards header serves to baseline SIP when the
extension is not present. In rare circumstances, where the server
cannot process limit the number of hops a request without the extension,
can transit on the server MAY send
a 421 (Extension Required) response. This response indicates way to its destination. It consists of an integer
that is decremented by one at each hop. If the
proper response cannot be generated without support of a specific
extension. The needed extension(s) MUST be included in a Require
header in Max-Forwards value
reaches 0 before the response. This behavior is NOT RECOMMENDED, as request reaches its destination, it will
generally break interoperability.
Any extensions applied to a non-421 response MUST be listed in
rejected with a
Require header included in the 483 Too Many Hops error response. Of course, the server
A UAC MUST
NOT apply extensions not listed in the Supported header in the
request. As insert a result of this, the Require Max-Forwards header in a response will
only ever contain option tags defined in standards track RFCs.
8.2.6 Processing the Request
Assuming all of the checks in the previous subsections are passed,
the UAS processing becomes method specific. Section 10 deals with the
REGISTER request, section 11 deals with the OPTIONS request, section
13 deals with the INVITE request, and section 15 deals with the BYE
request.
8.2.7 Generating the Response
When a UAS wishes to construct a response to a request, field into each request it follows
Various Authors [Page 34] 30]
Internet Draft SIP October 26, 2001
these procedures. Additional procedures may be needed depending on
the status code of the response and the circumstances January 28, 2002
originates with a value of its
construction. These additional procedures are documented elsewhere. 70.
8.1.1.7 Via
The From field of Via header is used to indicate the response MUST equal transport used for the From field of
transaction, and to identify the
request. The Call-ID field of location where the response MUST equal the Call-ID
field of is to be
sent.
When the UAC creates a request, it MUST insert a Via into that
request. The Cseq field of protocol and version in the response header MUST equal the
Cseq field of the request. be SIP and 2.0,
respectively. The Via headers in the response header it inserts MUST equal contain a branch
parameter. This parameter is used to uniquely identify the Via headers in
transaction created by that request. This parameter is used by both
the request, client, and the server.
The branch parameter value MUST maintain be unique across time for all
requests sent by the same ordering.
If UA. The exception to this rule is CANCEL. As
discussed below, a CANCEL request contained a To tag in will have the request, same value of the To field in
branch parameter as the
response MUST equal that request it cancels.
The uniqueness property of the request. However, if the To field in branch ID parameter, to
facilitate its use as a transaction ID, was not part of RFC
2543
The branch ID inserted by an element compliant with this
specification MUST always begin with the request did characters "z9hG4bK". These
7 characters are used as a magic cookie (7 is deemed sufficient to
ensure that an older RFC 2543 implementation would not contain pick such a tag,
value), so that servers receiving the URI in request can determine that the To field
branch ID was constructed in the
response MUST equal fashion described by this
specification (i.e., globally unique). Beyond this requirement, the URI in the To field in the request.
Additionally, the UAS MUST add a tag to
precise format of the To field in branch token is implementation-defined.
The Via header maddr, ttl, and sent-by components will be set when
the response.
This serves to identify request is processed by the UAS that transport layer (Section 19).
Via processing for proxies is responding, possibly
resulting described in a component of a dialog ID. Sections 3 and sec:proxy-
response-processing-via.
8.1.1.8 Contact
The same tag MUST Contact header provides a SIP URI that can be used
for all responses to contact
that request, both provisional and final.
Procedures for generation specific instance of tags are defined in Section 21.3.
8.3 Redirect Servers
In some architectures it may be desirable to reduce the processing
load on proxy servers that are responsible for routing requests by
relying on redirection. Redirection allows servers to push routing
information user agent for a subsequent requests. The
Contact header MUST be present in any request back that can result in a response to the client, thereby
taking themselves out
establishment of a dialog. For the loop of further messaging for this
transaction while still aiding methods defined in locating the target of this
specification, that includes only the INVITE request.
When For these
requests, the originator scope of the request receives Contact is the redirection it will
send a new request based on dialog. That is, the routing information it has received.
By propagating routing information from
Various Authors [Page 31]
Internet Draft SIP January 28, 2002
Contact header refers to the core of URI at which the network UA would like to
its edges, redirection allows
receive requests, for considerable network scalability.
A redirect server is logically constituted of a server transaction
layer and a transaction user requests that has access to a location service are part of
some kind (see Section 10 for more on registrars and location
services). This location service is effectively a database containing
mappings between that dialog only.
Only a single URI MUST be present.
For further information on the Contact header, see Section 24.10.
8.1.1.9 Supported and a set of one or more alternative
locations at which Require
If the target of UAC supports extensions to SIP that URI can be found.
A redirect server does not issue any SIP requests of its own. After
receiving a request other than CANCEL, applied by the
server gathers the list of
alternative locations from to the location service and either returns a
final response of class 3xx or it refuses response, the request. For well-
formed CANCEL requests, it UAC SHOULD return include a 2xx response. This
response ends Supported header in
the SIP transaction. The redirect server maintains
transaction state request listing the option tags (Section 23.2) for those
extensions. This includes support for reliability for provisional
responses, which is an entire SIP transaction. It extension even though it is the
responsibility defined within
this specification. The option tag for reliability of clients provisional
responses is 100rel
The option-tags listed MUST only refer to detect forwarding loops between redirect
Various Authors [Page 35]
Internet Draft SIP October 26, 2001
servers.
When a redirect server returns a 3xx response extensions defined in
standards-track RFCs. This is to prevent servers from insisting that
clients implement non-standard, vendor-defined features in order to
receive service. Extensions defined by experimental and informational
RFCs are explicitly excluded from usage with the Supported header in
a request, it
populates the list of (one or more) alternative locations into
Contact headers. An "expires" parameter since they too are often used to document vendor-defined
extensions.
If the Contact header may
also be supplied UAC wishes to indicate insist that a UAS understand an extension that
the lifetime of UAC will apply to the Contact data.
The Contact request in order to process the request, it
MUST insert a Require header field contains URIs giving into the new locations or
user names request listing the option tag
for that extension. If the UAC wishes to apply an extension to try, or may simply specify additional transport
parameters. A 301 or 302 response may also give the same location
request and
username insist that was targeted by any proxies that are traversed understand
that extension, it MUST insert a Proxy-Require header into the initial
request but specify
additional transport parameters such as a different server or
multicast address to try, or a change of SIP transport from UDP to
TCP or vice versa.
Note listing the option tag for that extension.
As with the Contact Supported header, the option-tags in the Require header field MAY also
MUST only refer to extensions defined in standards-track RFCs.
A Require header in a different
entity than request with the one originally called. For example, a SIP call
connected option tag 100rel means that
the UAC wishes for all provisional responses to GSTN gateway may need this request to deliver be
transmitted reliably. This header MUST NOT be present in any requests
excepting INVITE, although extensions to SIP may allow its usage with
other request methods.
8.1.1.10 Additional Message Components
After a special informational
announcement such as "The number you have dialed new request has been changed."
A Contact response header field can contain any suitable URI
indicating where created, and the called party can be reached, not limited headers described above
have been properly constructed, any additional optional headers are
added, as are any headers specific to the method.
SIP
URIs. For example, it could requests MAY contain URL's for phones, fax, or irc (if
they were defined) or a mailto: (RFC 2368, [18]) URL.
The "expires" parameter MIME-encoded message-body. Regardless of
Various Authors [Page 32]
Internet Draft SIP January 28, 2002
the Contact header field indicates how
long the URI is valid. The parameter is either a number indicating
seconds or a quoted string containing type of body that a SIP-date. If this parameter
is not provided, request contains, certain headers must be
formulated to characterize the value contents of the Expires header field determines how
long body. For further
information on these headers see Sections 24.14, 24.15 and 24.12.
8.1.2 Sending the URI Request
The destination for the request is valid. Implementations then computed. A loose-routing
element MAY treat values larger than
2**32-1 (4294967295 seconds or 136 years) as equivalent use local policy to 2**32-1.
Redirect servers MUST ignore features that are not understood
(including unrecognized headers, Required extensions, or even method
names) determine the IP address, port, and proceed with
transport used to reach the redirection destination. One example of the session in question.
If such a particular extension requires that intermediate devices support
it, policy
is an element configured to send requests to a default outbound
proxy. Section 8.1.3 discusses restrictions on loose-routing
policies. For other elements, the extension MUST destination can be tagged determined by
applying the DNS proceedures described in [8] to the Proxy-Require field as well
(see Section 22.28).
9 Canceling a Request
The previous section has discussed general UA behavior for generating
requests, and processing responses, for requests Request-URI.
These procedures yield an ordered set of all methods. In
this section, we discuss a general purpose method, called CANCEL. address, port, and
transports to attempt. The CANCEL request, as UAC SHOULD follow the name implies, is used to cancel a previous
request sent by procedures defined
there for stateful elements, trying each address until a client. Specifically, it asks the user agent server
to cease processing the request, is
contacted. Each try constitutes a new transaction, and generate an error response to
Various Authors [Page 36]
Internet Draft SIP October 26, 2001
that request. CANCEL has no effect on therefore each
carries a request that has already been
responded to. Because of this, it is most useful to CANCEL requests
which can take different Via header with a long time to respond to. For this reason, CANCEL new branch parameter.
Furthermore, the transport value in the Via header is
most useful for INVITE requests, which can take a long time set to
generate a response. In that usage, a UAS that receives a CANCEL
request whatever
transport was determined for an INVITE, but has not yet sent a response, would "stop
ringing", and then respond to the INVITE with a specific error
response (a 487).
Cancel requests can be constructed and sent by any type of client,
including both proxies and user agent servers. Section 15 discusses
under what conditions target server.
8.1.3 Loose Routing Policies
An element MAY apply a UAC would CANCEL an INVITE request, local loose-routing policy when preparing and
Section 16 discusses proxy usage of INVITE.
Because a stateful proxy can generate its own CANCEL, a stateful
proxy also responds to a CANCEL, rather than simply forwarding a
response it would receive from a downstream element. For that reason,
CANCEL is referred to as a "hop-by-hop" request, since it is
responded to at each stateful proxy hop.
9.1 Client Behavior
The following procedures are used to construct
sending a CANCEL request. The
Request-URI, Call-ID, To, This policy MAY affect the numeric part of CSeq Request-URI and From Route
header
fields in the CANCEL request MUST be identical to those field values in the request being cancelled, including tags. A CANCEL constructed by a
client MUST have only a single Via header, whose value matches the
top Via in as well as where the request being cancelled. Using the same values for
these headers allows the CANCEL is
sent, and what transport mechanism is used to be matched with the request it
cancels (Section 9.2 indicates how such matching occurs). However, send it.
Elements SHOULD use the method part strict-routing policy of removing the Cseq header MUST have a topmost
value of CANCEL. This
allows it to be identified and processed as from a transaction route set, placing it in its own
right (See Section 17).
Once the CANCEL is constructed, the client SHOULD check whether any
response (provisional or final) has been received for Request-URI and sending the
request
being cancelled (herein referred to as the "original request"). The
CANCEL request MUST NOT be sent if no provisional response has been
received, rather, the client MUST wait for location indicated by that URI.
This is the arrival behavior of a
provisional response before sending the request. If the original
request has generated a final response, elements implementing earlier
strict versions of Route/Record-Route.
Where appropriate, elements MAY deviate from the CANCEL SHOULD NOT be
sent, strict-routing
policy as long as it is an effective no-op, since CANCEL has no effect on
requests which have already generated a final response. When the
client decides to send the CANCEL, it creates a client transaction
for following restrictions are met:
8.1.3.1 Modifying the CANCEL, and passes it Route header field
A loose-routing element MAY remove the CANCEL request along with topmost Route header field
value. It MUST remove the
destination address, port and transport. topmost Route header field value if that
value indicates a resource this element is responsible for. The destination address,
port, and transport for the CANCEL
element MUST be identical to those used to
send NOT modify or remove any subsequent Route header field
values. The element MAY place additional Route header field values
into the original request. Route header field before any existing values (effectivly
pushing values onto the top of the Route set).
Various Authors [Page 37] 33]
Internet Draft SIP October 26, 2001
If it was allowed January 28, 2002
A loose-routing element may chose to send not remove the CANCEL before receiving a
response for first
Route header field value. For example, elements configured
to use default outbound proxies in liu of using the previous request DNS
resolution proceedures will leave the server could receive topmost Route header
field value in the CANCEL before message.
When the original request.
Note that both topmost Route header field value indicates a
resource this element is responsible for, the transaction corresponding to message has
reached the original request element indicated by the route, and that value
must be removed from the CANCEL transaction will complete independently. However, a
UAC canceling a request cannot rely on receiving a 487 (Request
Terminated) response for Route header field. This assures
that Route header field values are consumed when the original request, as an RFC 2543-
compliant UAS will not generate such a response.
destination they indicate has been reached.
8.1.3.2 Modifying the Request-URI
If there is no final
response for the original request in 64*T1 seconds for an INVITE
transaction, and T3 seconds for Request-URI identifies a non-INVITE transaction, the client
SHOULD then consider resource for which this element is
responsible, the original transaction cancelled and loose-route policy SHOULD
destroy include modifying the client transaction handling
Request-URI before sending the original request.
9.2 Server Behavior
The CANCEL method requests
This restriction ensures that a Request-URI is modified
once the TU at resource it indicates has been reached.
8.1.3.3 Destination Choice
A loose-routing policy MUST direct the server side cancel a
pending request with to or the same Call-ID, To, From, top Via resource
indicated in the first Route header and
Request-URI and CSeq (sequence number only) field value, or to a proxy it
trusts to ensure this property.
This restriction ensures the resource indicated by the
topmost Route header field values. value is actually visited.
8.1.3.4 Loop Avoidance
The processing Request-URI of a CANCEL request at emitted by a server depends on loose-routing element MUST
differ from the type of
server. A stateless proxy will forward it, a stateful proxy might
respond URI in the first Route header field value.
This restriction is necessary to it and generate some CANCEL requests of its own, and a UAS
will respond avoid triggering false loop
detections in older systems. The following algorithm can be applied
to it. See Section 16.8 for proxy treatment ensure sufficient difference in otherwise matching Request-URIs
and first Route header field values.
For each of CANCEL.
When a UAS receives a CANCEL, it looks for any server transactions
which were created by requests with these items, D is the same To, From, Call-ID, Cseq
numeric value, Request-URI and top Via header. If no matching
transactions are found, address of the CANCEL is responded next hop (which may
or may not be equivalent to with a 481 (Call
Leg/Transaction Does Not Exist). A).
If the transaction for topmost element in the original received Route header field is
Various Authors [Page 34]
Internet Draft SIP January 28, 2002
<sip:a@A>, the outgoing request still exists, will contain
METHOD sip:a@A;maddr=D
Route: <sip:a@A>
If the behavior of topmost element in the UAS on receiving a CANCEL received Route header field is
<sip:a@A;maddr=D>, the outgoing request depends on whether it has already sent a final response for
original request. will contain
METHOD sip:a@A
Route: <sip:a@A;maddr=D>
If it has, the CANCEL topmost element in the received Route header field is
<sip:a@A;maddr=B> and D!=B, the outgoing request has no effect on will contain
METHOD sip:a@A;maddr=D
Route: <sip:a@A;maddr=B>
8.1.4 Processing Responses
Responses are first processed by the transport layer and then passed
up to the transaction layer. The transaction layer performs its
processing and then passes it up to the TU. The majority of response
processing in the original request, no effect on any session state,
and no effect on TU is method specific. However, there are some
general behaviors independent of the responses generated for method.
8.1.4.1 Transaction Layer Errors
In some cases, the original request. If response returned by the UAS has transaction layer will
not issued be a final response for the original request, it
immediately responds to the original request with SIP message, but rather a 487 (Request
Terminated). transaction layer event. The CANCEL request itself only
event that the TU will encounter is answered with the timeout event. When the
timeout event is received from the transaction layer, it MUST be
treated as if a 200 (OK) 408 (Request Timeout) status code has been received.
8.1.4.2 Unrecognized Responses
A UAC MUST treat any response in
either case. Once it does not recognize as being
equivalent to the x00 response is constructed it is passed code of that class, and MUST be able
to process the
server transaction x00 response code for the CANCEL request.
10 Registrations
10.1 Overview of Usage
SIP is all classes. For example, if a protocol
UAC receives an unrecognized response code of 431, it can safely
assume that offers there was something wrong with its request and treat the
response as if it had received a discovery capability. For one user to 400 (Bad Request) response code.
Various Authors [Page 38] 35]
Internet Draft SIP October 26, 2001
initiate January 28, 2002
8.1.4.3 Vias
If more than one Via header field is present in a session with another, SIP must discover response, the current
host(s) UAC
SHOULD discard the message.
The presence of additional Via header fields that precede
the called user is reachable at. This discovery process originator of the request suggests that the message was
misrouted or possibly corrupted.
8.1.4.4 Processing Reliable 1xx Responses
A 1xx response that contains a Require header with the option tag
100rel is accomplished by SIP proxy servers, which are responsible for
receiving a request, determining where reliable provisional response. The UA core follows the
procedures in Section 18.2 to send it based on knowledge
of process the location of response, which will result
in the user, and then sending it there. To do this,
proxies consult an abstract service known as generation of a location service ,
which provides address bindings for PRACK request to acknowledge the reliable
provisional response.
8.1.4.5 Processing 3xx responses
Upon receipt of a particular domain. These
address bindings map an incoming SIP URL, sip:bob@Biloxi.com , for redirection response (for example, a 3xx response
status code), clients SHOULD use the URI(s) in the Contact header
field to formulate one or more SIP URLs which are somehow "closer" to the
desired user, sip:bob@engineering.Biloxi.com , for example.
Ultimately, a proxy will consult a location service which maps a
received URL to new requests based on the current host(s) that a user redirected
request.
If more than one URI is logged present in Contact header fields within the
3xx response, the UA MUST determine an order in to.
There are many ways by which these contact
addresses should be processed. UAs MUST consult the contents "q" parameter
value of the location service can Contact header fields (see Section 22.10) if available.
Contact addresses MUST be established. One way ordered from highest qvalue to lowest. If
no qvalue is administratively. In the above example,
Bob present, a contact address is known considered to be have a member
qvalue of the engineering department through
access 1.0. Note that two or more contact addresses might have an
equal qvalue - these URIs are eligible to a corporate database. SIP provides a mechanism, however,
for a user agent be tried in parallel.
Once an ordered list has been established, UACs MUST try to explicitly create a binding contact
each URI in the location
service of ordered list in turn until a proxy. This mechanism is known as registration.
The server responds. If
there are contact addresses with an equal qvalue, the UAC MAY decide
randomly on an order in which to process of registration entails sending a REGISTER message these addresses, or it MAY
attempt to a
special type process contact addresses of UAS known as equal qvalue in parallel.
Note that for example, the UAC may effectively divide the ordered
list into groups, processing the groups serially and processing the
destinations in each group in parallel.
If contacting an address in the list results in a registrar. The registrar acts failure, as a
front end defined
in the next paragraph, the element moves to the location service for a domain, reading and writing
mappings based on next address in the contents of
list, until the REGISTER messages. This
location service will then be consulted by a proxy server that list is
responsible for routing requests for that domain.
SIP does not mandate a particular mechanism for implementing exhausted. If the
location service. The only requirement list is that a registrar for some
domain MUST exhausted, then the
request has failed.
Various Authors [Page 36]
Internet Draft SIP January 28, 2002
Failures SHOULD be capable of reading and writing data detected through failure response codes (codes
greater than 399) or network timeouts. Client transaction will report
any transport layer failures to the location
service, and transaction user.
When a proxy failure for that domain MUST be capable of reading that
same data. A registrar MAY be co-located with a particular SIP proxy
server for contact address is recieved, the same domain, allowing usage of an in memory database
for
client SHOULD try the location service. Usage of a shared database is another
implementation choice. The choice depends entirely on the
architectural requirements (redundancy, scalability, etc) of a
particular deployment.
Registration creates bindings in a location service for a particular
domain that associate an "address of record" URI with one or more
"contact addresses". next contact address. This means that when will involve
creating a proxy for that domain
receives new client transaction to deliver a request whose request URI matches the address of record,
the proxy will forward the request new request.
In order to the create a request based on a contact addresses
registered to that address of record. Generally, it only makes sense
to register an address of record at in a location service for 3xx
response, a domain
when requests for that address of record would be routed to that
domain. In most cases, this means that UAC MUST copy the domain of entire URI from the registration
will need to match Contact header into
the domain in Request-URI, except for the "method-param" and "header" URI
parameters (see Section 23.1.1 for a definition of these parameters).
It uses the address of record.
Various Authors [Page 39]
Internet Draft SIP October 26, 2001
The most important usage of the registration mechanism is "header" parameters to inform a
proxy of create headers for the mapping between new
request, overwriting headers associated with the address of record and redirected request
in accordance with the current
host on which guidelines in Section 23.1.5.
Note that in some instances, headers that have been communicated in
the UA resides. However, contact address may instead append to existing request headers in
the registration process is original redirected request. As a general mechanism for establishing bindings, and can be used for
other purposes (for example, to set up call forwarding).
10.2 Construction of rule, if the REGISTER request
Several operations header can be performed with a REGISTER method with
respect to
accept a registrar. One comma-separated list of these is values, then the basic registration
operation that is described above, which provides a new binding
between an address of record and one or more contact addresses.
Registration on behalf of a particular address of record may header value
MAY be
performed by a third party if they are authorized to do so. A client
may also remove previous bindings, or query appended to determine which
bindings are currently any existing values in place for an address of record.
Aside from the exceptions noted in this and original redirected
request. If the following sections, header does not accept multiple values, the construction of value in
the REGISTER method, and behavior of clients
sending a REGISTER is identical to original redirected request MAY be overwritten by the general UAC behavior described header
value communicated in Section 8.1 and Section 17.1. Regardless of the operation that is
performed by contact address.
For example, if a REGISTER, contact address is returned with the following
value:
sip:user@host?Subject=foo&Call-Info=<http://www.foo.com>
Then any Subject header fields MUST be
formulated as follows:
Request-URI: The Request-URI names the domain of in the location
service that original redirected request is
overwritten, but the registration HTTP URL is meant for (e.g.
"chicago.com"). The user name MUST be empty.
To: The To merely appended to any existing
Call-Info header field contains the address of record whose
registration values.
It is to be created or modified. Note RECOMMENDED that the
initial To header field and UAC reuse the Request-URI field SHOULD
therefore be different same To, From, and Call-ID
used in a REGISTER message.
From: The From header field contains the address of record of
the person responsible for original redirected request, but the registration, which UAC MAY be
identical also choose
to update for example the value of the To header field. For third-
party registrations the From Call-ID header field value for new
requests.
Finally, once the new request has been constructed, it is sent using
a new client transaction, and To header therefore MUST have a new branch ID in
the top Via field are different.
Call-ID: All registrations from as discussed in Section 8.1.1.7.
In all other respects, requests sent upon receipt of a user agent client redirect
response SHOULD use
the same Call-ID header value, at least within the same
reboot cycle.
If different Call-IDs were used for overlapping
REGISTER messages coming from re-use the same client, headers and bodies of the
registrar might have trouble determining their
ordering. original
Various Authors [Page 40] 37]
Internet Draft SIP October 26, 2001
Contact: REGISTER requests MAY contain one or more January 28, 2002
request.
In some instances, Contact header fields. Contact addresses are presented in values may be cached at UAC
temporarily or permanently depending on the
Contact header fields of REGISTER requests.
Note that user agents MUST NOT send a new registration (containing
new Contact header fields, as opposed to a retransmission) until they
have status code received and
the presence of an expiration interval; see Sections 25.3.2 and
25.3.3.
8.1.4.6 Processing 4xx responses
Certain 4xx response codes require specific UA processing,
independent of the method.
If a 401 (Unauthorized) or 407 (Proxy Authentication Required)
response from is received, the registrar for UAC SHOULD follow the previous one.
The following optional Contact header parameters also contain
behavior specific authorization
procedures of Section 20.2 and Section 20.3 to retry the registration process.
action: The "action" parameter has been deprecated. UACs SHOULD
NOT use request with
credentials.
If a 413 (Request Entity Too Large) response is received (Section
25.4.11), the "action" parameter.
expires: The "expires" parameter indicates how long request contained a body that was longer than the UAS
was willing to accept. If possible, the UAC
would like SHOULD retry the binding to be valid. The parameter is request,
either
a number indicating seconds omitting the body or using one of a quoted string containing a
SIP-date. smaller length.
If this parameter a 415 (Unsupported Media Type) response is received (Section
25.4.13), the request contained media types not provided, supported by the value of UAS.
The UAC SHOULD retry sending the Expires request, this time only using
content with types listed in the Accept header field determines how long in the binding is
valid. Implementations MAY treat values larger than 2**32-1
(4294967295 seconds or 136 years) as equivalent to 2**32-1.
10.2.1 Adding Bindings response, with REGISTER
For a simple registration, a REGISTER request sent to a registrar
includes contact addresses to which requests should be forward for
the originating user's address of record. The address of record
itself (i.e. 'sip:carol@chicago.com') MUST populate
encodings listed in the To Accept-Encoding header of in the REGISTER. The Contact header fields of response, and
with languages listed in the request typically
contain SIP URIs that identify particular SIP endpoints (i.e.
'sip:carol@cube2214a.chicago.com'), but they MAY use any Accept-Language in the response.
If a 416 (Unsupported URI scheme;
this way Scheme) response is received (Section
25.4.14, the Request-URI used a SIP UA can choose to register telephone numbers (with URI scheme not supported by the
tel URL, [13]) or email addresses (with
server. The client SHOULD retry the request, this time, using a mailto URL, [18]) as
Contacts for an address of record.
For example, if Carol, whose address of record SIP
URI.
If a 420 (Bad Extension) response is to register with
the registrar associated with received (Section 25.4.15), the location service of chicago.com.
This location service would then be accessed
request contained a Require or Proxy-Require header listing an
option-tag for a feature not supported by a proxy server that
receives requests targeting users or UAS. The UAC
SHOULD retry the request, this time omitting any extensions listed in
the chicago.com domain, and
hence new requests for Carol's address Unsupported header in the response.
In all of record will be routed to
her SIP endpoint.
Once a client has established bindings at the above cases, the request is retried by creating a registrar, it MAY send
subsequent registrations containing new bindings or modifications to
pre-existing bindings as necessary. The 2xx response to
request with the REGISTER
message will appropriate modifications. This new request SHOULD
have the same value of the Call-ID, To, and From of the previous
request, but the CSeq should contain (in Contact header fields) a complete list of
bindings new sequence number that have been registered for this address of record at this
registrar.
Various Authors [Page 41]
Internet Draft SIP October 26, 2001
bob
+----+
| UA |
| |
+----+
|
|3)INVITE
| carol@chicago.com
chicago.com +--------+ V
+---------+ 2)Store|Location|4)Query +-----+
|Registrar|=======>| Service|<=======|Proxy|sip.chicago.com
+---------+ +--------+=======>+-----+
A 5)Resp |
| |
| |
1)REGISTER| |
| |
+----+ |
| UA |<-------------------------------+
cube2214a| | 6)INVITE
+----+ carol@cube2214a.chicago.com
carol
Figure 2: REGISTER example is
one higher than the previous.
With other 4xx responses, including those yet to be defined, a
retry may or may not be possible depending on the method and the use
Various Authors [Page 42] 38]
Internet Draft SIP October 26, 2001
10.2.1.1 Setting the Expiration Interval of Contact Addresses January 28, 2002
case.
8.2 UAS Behavior
When a client sends request outside of a REGISTER request, it MAY suggest an expiration
interval that indicates how long the client would like the
registration to be valid (although as dialog is detailed in Section 10.3,
the registrar has the ultimate say).
There are two ways in which processed by a client can suggest an expiration
interval for UAS, there is a binding: through an Expires header, or an "expires"
Contact header parameter. The latter allows expiration intervals to
be suggested
set of processing rules which are followed, independent of the
method. Section 12 gives guidance on how a per-binding basis when more than one binding UAS can tell whether a
request is
given in inside or outside of a single REGISTER, whereas the former suggests an expiration
interval for all Contact header fields dialog.
Note that do not contain the
"expires" parameter.
If neither mechanism for expressing a suggested expiration time request processing is
present in a REGISTER, atomic. If a default suggestion of one hour request is assumed.
10.2.1.2 Setting Preference among Contact Addresses accepted, all
state changes associated with it MUST be performed. If more than one Contact it is sent in
rejected, all state changes MUST NOT be performed.
8.2.1 Method Inspection
Once a REGISTER, then request is authenticated (or no authentication was desired),
the registering
UA intends to associate all UAS MUST inspect the method of the URIs given in these Contact
headers with request. If the address UAS does not
support the method of record present a request it MUST generate a 405 (Method Not
Allowed) response. Procedures for generation of responses are
described in Section 8.2.6. The UAS MUST also add an Allow header to
the To field. This 405 (Method Not Allowed) response. The Allow header field MUST
list
can be prioritized with the "q" mechanism.
q: set of methods supported by the UAS generating the message.
The "q" parameter indicates a relative preference for Allow header field is presented in Section 24.5.
If the
particular Contact method is one supported by the server, processing continues.
8.2.2 Header Inspection
If a UAS does not understand a header field compared to other bindings
present in a request (that is,
the header is not defined in this REGISTER message specification or existing within the
location service of in any supported
extension), the registrar. For an example of how a
proxy server uses "q" values, see Section 16.5.
10.2.2 Removing Bindings with REGISTER
Registrations are removed from MUST ignore that header and continue
processing the registrar through an expiration
process; registrations message. A UAS SHOULD ignore any malformed headers
that are soft state not necessary for processing requests.
8.2.2.1 To and need to be refreshed
periodically. A client may attempt to influence Request-URI
The To header field identifies the expiration
intervals selected original recipient of the request
designated by the registrar as described user identified in Section 10.2.1. the From field. The original
recipient may or may not be the UAS processing the request, due to
call forwarding or other proxy operations. A registering user agent UAS MAY apply any policy
it wishes in determination of whether to accept requests when the immediate removal of a binding
by specifying an expiration interval To
field is not the identity of "0" for that contact address
in a REGISTER. It the UAS. However, it is RECOMMENDED that user agents support this
mechanism so that bindings can be removed
a UAS accept requests even if they do not recognize the URI scheme
(for whatever reason)
before their expiration interval has passed.
The REGISTER-specific Contact example, a tel: URI) in the To header, or if the To header field value
does not address a known or current user of "*" applies this UAS. If, on the
other hand, the UAS decides to
all registrations, but it MUST only be used when reject the Expires header
is present request, it SHOULD generate
a response with a value of "0". 403 (Forbidden) status code and pass it to the
Various Authors [Page 43] 39]
Internet Draft SIP October 26, 2001
Use of January 28, 2002
server transaction layer for transmission.
However, the "*" Contact header field value allows a
registering user agent Request-URI identifies the UAS that is to remove all of its bindings
expediently.
10.2.3 Fetching Bindings with REGISTER process the
request. If no Contact headers are present in the Request-URI uses a REGISTER, then scheme not supported by the UA is UAS,
it SHOULD reject the request with a 416 (Unsupported URI Scheme)
response. If the Request-URI does not
in fact registering any new bindings, and identify an address that the list of bindings
UAS is
therefore left unchanged. As noted above, in a successful response willing to
this REGISTER message, accept requests for, it SHOULD reject the complete list of existing bindings is
returned, and thus a REGISTER without Contact headers serves as request
with a
fetch operation.
10.2.4 Refreshing Registrations
When 404 (Not Found) response. Typically, a 2xx response has been received by UA that uses the client for a
REGISTER
request, the client MUST determine when each method to bind its address of the bindings
enumerated in the response needs record to be refreshed. This may a specific contact
address will see requests whose Request-URI equals those contact
addressess. Other potential sources of received Request-URIs include
bindings
the Contact headers of requests and responses sent by the UA that were registered
establish or refresh dialogs.
8.2.2.2 Merged Requests
If the request has no tag in previous REGISTER the To, the TU checks ongoing
transactions.
Since If the list To, From, Call-ID, CSeq exactly match (including
tags) those of bindings returned any request received previously, but the branch-ID in
the topmost Via is different from those received previously, the TU
SHOULD generate a 482 (Loop Detected) response and pass it to the
server transaction.
The same request has arrived at the UAS more than once,
following different paths, most likely due to forking. The
UAS processes the first such request received and responds
with a REGISTER may
contain bindings 482 (Loop Detected) to the rest of them.
8.2.2.3 Require
Assuming the UAS decides that were not included in this REGISTER transaction, it is the client must correlate Contact header fields in proper element to process the response with
request, it examines the Contact Require header fields it sent in field, if present.
The Require general-header field is used by a UAC to tell a UAS about
SIP extensions that the request UAC expects the UAS to support in order to
establish proper expiration timers. This correlation should be
performed in accordance with
process the URI comparison rules given request properly. Its format is described in Section 21.1.4.
24.33. If a UAS does not understand an option-tag listed in a Require
header field, it MUST respond by generating a response with status
code 420 (Bad Extension). The registering UA UAS MUST re-register each contact address at least as
often as add an Unsupported header
field, and list in it those options it does not understand amongst
those in the mandated expiration interval. A REGISTER that refreshes
a binding SHOULD have Require header of the same Call-ID as request. Upon receipt of the request which created 420
(Bad Extension) the binding. The CSeq header client SHOULD have a numeric sequence number
that is one higher than retry the value sent request, this time
without using those extensions listed in the last request with Unsupported header field
in the
same Call-ID. response.
Note that a UA Require and Proxy-Require MUST must update its expiration timers for refreshing
each binding every time it receives a response to a registration
request.
Registration refreshes SHOULD NOT be sent to the same address as the
original registration, unless redirected.
10.2.5 Discovering used in a Registrar
Depending on the policy of their administrative domain, SIP UAs can
be configured with the address of CANCEL
request, or in an ACK request sent for a local registrar. Some UAs may non-2xx response. These
headers should be
equipped with protocol tools (outside the scope of SIP) that allow
them to discover their local registrar dynamically. ignored if they are present in these requests.
Various Authors [Page 44] 40]
Internet Draft SIP October 26, 2001
Note that as an alternate means of discovering January 28, 2002
An ACK request for a registrar if no
local registrar is configured 2xx response MUST contain only those Require and
Proxy-Require values that were present in the user agent, clients MAY register
via multicast. Multicast registrations are addressed to the well-
known "all SIP servers" multicast address "sip.mcast.net"
(224.0.1.75). This request MUST be scoped to ensure it is not
forwarded beyond the boundaries of the administrative system. initial request.
Example:
UAC->UAS: INVITE sip:watson@bell-telephone.com SIP/2.0
Require: 100rel
UAS->UAC: SIP/2.0 420 Bad Extension
Unsupported: 100rel
This
MAY be done with either TTL or administrative scopes (see [19]),
depending on what is implemented in the network. SIP user agents MAY
listen to make sure that address and use it to become aware of the location of
other local users (see [20]); however, they do client-server interaction
will proceed without delay when all options are understood
by both sides, and only slow down if options are not respond to the
request.
Multicast registration may be inappropriate
understood (as in some
environments, for example, if multiple businesses share the
same local area network.
If example above). For a SIP UA knows of an appropriate registrar well-matched
client-server pair, the interaction proceeds quickly,
saving a round-trip often required by negotiation
mechanisms. In addition, it SHOULD attempt to
register with this also removes ambiguity when the
client requires features that the server periodically - management does not
understand. Some features, such as call handling fields,
are only of registration
intervals is detailed below.
10.3 interest to end systems.
8.2.3 Content Processing of REGISTER at
Assuming the Registrar
A registrar is a UAS that responds to a REGISTER request, and stores understands any extensions required by the client,
the information gathered from that request in a location service that
is in turn accessible to proxy servers within its administrative
domain. A registrar handles requests as a UAS (in conformity with
Section 8.2 and Section 17.2) but it accepts only examines the REGISTER method body of the message, and generates only the responses detailed in this section. Note headers that
describe it. If there are any bodies whose type (indicated by the REGISTER method also does not support
Content-Type), language (indicated by the Record-Route Content-Language) or Route
header,
encoding (indicated by the Content-Encoding) are not understood, and
that proxy servers MUST NOT add Record-Route headers to
REGISTER requests.
A registrar must know (through provisioning or some other mechanism) body part is not optional (as indicated by the set if administrative domain(s) for which its associated location
service(s) are responsible. REGISTER requests Content-
Disposition header), the UAS MUST be processed by reject the request with a
registrar 415
(Unsupported Media Type) response. The response MUST contain an
Accept header listing the types of all bodies it understands, in the order that they are received.
Upon
event the arrival request contained bodies of a REGISTER message, types not supported by the registrar UAS.
If the request contained content encodings not understood by the UAS,
the response MUST inspect contain an Accept-Encoding header listing the Request-URI to determine whether it has access to a location
service responsible for
encodings understood by the domain to which this request is
addressed. UAS. If this message is for some other administrative domain,
then if the registrar can act as a proxy server, it SHOULD forward the request to the addressed domain (following contained content
with languages not understood by the general behavior
for proxying messages described in Section 16).
When a registrar receives a REGISTER message, it is RECOMMENDED that UAS, the registrar authenticate response MUST contain
an Accept-Language header indicating the user agent client. Mechanisms for languages understood by the
Various Authors [Page 45]
Internet Draft SIP October 26, 2001
authentication
UAS.
Beyond these checks, body handling depends on the method and type.
For further information on the processing of Content-specific headers
Various Authors [Page 41]
Internet Draft SIP user agents are described in January 28, 2002
see Section 20.2;
registration behavior in no way overrides the generic authentication
framework for SIP. If no authentication mechanism is available, the
registrar MAY take the From address 7.4 as the asserted identity of the
originator of the request.
Once the identity of the registering user has been ascertained, it is
RECOMMENDED well as Section 24.11 through 24.15.
8.2.4 Applying Extensions
A UAS that wishes to apply some extension when generating the registrar determine
response MUST only do so if the authenticated user
agent is authorized to request and/or modify registrations support for this
address of record. For example, a registrar might consult a
authorization database (directly or through an appropriate protocol) that maps credentials or other tokens of identity resulting from
authentication to one or more addresses of record for which this
identity extension is responsible.
Note that indicated
in architectures that support third-party
registration, one entity may be responsible for updating the registrations associated with multiple addresses of
record.
When Supported header in the registrar has determined that request. If the client desired extension is permitted to
make the request, the registrar MUST extract
not supported, the address of record
from server SHOULD rely only on baseline SIP and any
other extensions supported by the client. To header field of the REGISTER. Note ensure that the registrar SHOULD
can be fulfilled, any specification of a new extension MUST extract the entire To header field URI in order include
discussion of how to use it as an
index in return gracefully to baseline SIP when the location service.
Next,
extension is not present. In rare circumstances, where the registrar MUST query its location service (the repository
of previously registered bindings) for server
cannot process the set of bindings associated
with this address of record. If request without the address of record is not valid
for this administrative domain (for example, because extension, the username is
not assigned), then server MAY send
a 421 (Extension Required) response. This response indicates that the registration attempt fails (see below). A
full URI comparison (as described in Section 21.1.4) MUST
proper response cannot be
performed to determine whether a given binding matches this address generated without support of record. a specific
extension. The registrar now needed extension(s) MUST extract all the Contact header fields from the
REGISTER message (note that there may be no Contact included in a Require
header field).
Each contact address in the response. This behavior is NOT RECOMMENDED, as it will
generally break interoperability.
Any extensions applied to a REGISTER non-421 response MUST now be compared to all
existing registrations at this location service according to the
rules listed in Section 21.1.4. Note that URIs other than SIP URIs a
Require header included in
contact addresses the response. Of course, the server MUST be compared according to
NOT apply extensions not listed in the standard URI
equivalency rules for Supported header in the URI schema
request. As a result of this, the Require header in question.
If a match is found among pre-existing registrations, response will
only ever contain option tags defined in standards-track RFCs.
8.2.5 Processing the registrar
MUST copy Request
Assuming all parameters associated with of the current Contact header
field from checks in the REGISTER message into the pre-existing binding in its
Various Authors [Page 46]
Internet Draft SIP October 26, 2001
location service (overwriting with changed values any existing
parameters as necessary, with previous subsections are passed,
the exception of "expires"). Expiration
intervals for this contact address MUST also be reset, based on any
suggested expiration in UAS processing becomes method-specific. Section 10 covers the
REGISTER (remember that this can be "0").
If no match is found among request, section 11 covers the set of pre-existing registrations, OPTIONS request, section 13
covers the
registrar MUST create INVITE request, and section 15 covers the BYE request.
8.2.6 Generating the Response
When a new binding in its location service between UAS wishes to construct a response to a request, it follows
these procedures. Additional procedures may be needed depending on
the address status code of record the response and the current Contact header field. All
Contact header field parameters circumstances of its
construction. These additional procedures are copied verbatim into this new
binding (again with documented elsewhere.
8.2.6.1 Sending a Provisional Response
One largely non-method-specific guideline for the exception generation of "expires"). An expiration
interval
responses is that UASs SHOULD NOT issue a provisional response for a
non-INVITE request. Rather, UASs SHOULD generate a final response to
a non-INVITE request as sooon as possible.
When a 100 (Trying) response is generated, any Timestamp header
present in the request MUST be selected by the registrar, taking copied into account any
suggested expiration for this contact address in the REGISTER.
Allowing the registrar to set the registration interval
protects it against excessively frequent registration
refreshes while limiting the state that it needs to
maintain 100 (Trying)
Various Authors [Page 42]
Internet Draft SIP January 28, 2002
response.
8.2.6.2 Headers and decreasing the likelihood of registrations
going stale. Tags
The expiration interval mandated by From field of the registrar may be either
longer or shorter than response MUST equal the interval suggested by From field of the sender
request. The Call-ID field of the
REGISTER, though response MUST equal the registrar SHOULD abide by Call-ID
field of the registering
client's suggestion.
A server MAY decide to lengthen request. The Cseq field of the expiration interval if response MUST equal the refresh rate
Cseq field of a particular client exceeds a
threshold, for example.
After the expiration interval selected by the registrar for a binding
has passed, if request. The Via headers in the binding has not been refreshed (increasing response MUST equal
the
expiration interval), Via headers in the registrar SHOULD silently discard request and MUST maintain the
binding.
Once all bindings same ordering.
If a request contained a To tag in the location service have been updated to
reflect any changes present to contact addresses in request, the REGISTER
message, To field in the registrar
response MUST remove any bindings equal that expire
immediately.
The REGISTER might have set of the expiration interval for
some bindings to "0" to remove them before their expiration
interval passes.
Finally, request. However, if the registrar must generate To field in
the request did not contain a response. If tag, the address of
record given URI in the To header field of in the REGISTER method is valid
for its administrative domain, then a 200
response MUST be sent,
Various Authors [Page 47]
Internet Draft SIP October 26, 2001
which MUST contain a complete list (within Contact header fields) of equal the currently valid bindings URI in the location service associated with
the address of record contained To field in the request;
additionally, the UAS MUST add a tag to the To field in the response
(with the exception of the REGISTER
request. This list 100 (Trying) response, in which a tag MAY
be empty (in which case present). This serves to identify the 200 would not
contain any Contact headers).
In UAS that is responding,
possibly resulting in a successful response to component of a REGISTER, wherein dialog ID. The same tag MUST
be used for all responses to that request, both final and provisional
(again excepting the bindings 100 (Trying)). Procedures for this
address generation of record
tags are enumerated as described above, the registrar
MUST supply an expiration interval for each contact address defined in either
an "expires" parameter of Section 23.3.
8.2.7 Stateless UAS Behavior
A stateless UAS is a Contact header or an Expires header. This
interval specifies the expiration interval UAS that does not maintain transaction state. It
replies to requests normally, but discards any state that would
ordinarily be retained by a UAS after a response has been mandated by
the registrar (taking into account the registering UA's suggestion). sent. If a
stateless UAS receives a retransmission of a request, it regenerates
the registration failed because response and resends it, just as if it were the address of record contained in replying to the To field
first instance of the REGISTER is request. Stateless UASs do not valid use a
transaction layer; they receive requests directly from the transport
layer amd send responses directly to the transport layer.
The stateless UAS role is needed primarily to handle unauthenticated
requests for this domain, which a challenge response is issued. If unauthenticated
requests were handled statefully, then malicious floods of
unauthenticated requests could create massive amounts of transaction
state that might slow or complete halt call processing in a 404
MUST be sent.
11 Querying UAS,
effectively creating a denial of service condition; for Capabilities more
information see Section 22.1.5.
The most important behaviors of a stateless UAS are the following:
o A stateless UAS MUST NOT send provisional (1xx) responses.
o A stateless UAS MUST NOT retransmit responses.
o A stateless UAS MUST ignore ACK requests.
Various Authors [Page 43]
Internet Draft SIP method OPTIONS allows January 28, 2002
o A stateless UAS MUST ignore CANCEL requests.
o To header tags MUST be generated for responses in a client to query another client or
server as to its capabilities. This allows stateless
manner - in a client to discover
information about manner that will generate the methods, content types, extensions, codecs etc.
supported without actually "ringing" same tag for the other party.
same request consistently. For example,
before a client inserts information on tag
construction see Section 23.3.
In all other respects, a Require header field into an INVITE listing
an option that it is not certain the destination stateless UAS supports, the
client can query behaves in the destination same manner as
a stateful UAS. A UAS with an OPTIONS to see if this
option is returned can operate in either a Supported header field.
The target of stateful or stateless
mode for each new request.
8.3 Redirect Servers
In some architectures it may be desirable to reduce the OPTIONS request is identified processing
load on proxy servers that are responsible for routing requests, and
improve signaling path robustness, by the Request-URI,
which could identify another User Agent or a SIP Server.
Alternatively, relying on redirection.
Redirection allows servers to push routing information for a server receiving an OPTIONS request with
back in a Max-
Forwards header value of 0 MAY respond response to the request regardless client, thereby taking themselves out of
the Request-URI.
This behavior is common with HTTP/1.1.
An OPTIONS request sent as part loop of an established dialog does not
have any impact on further messaging for this transaction while still aiding
in locating the dialog.
11.1 Construction target of OPTIONS Request
An OPTIONS the request. When the originator of the
request is constructed using receives the standard rules for redirection, it will send a SIP new request as discussed Section 8.1.1.
A Contact header field MAY be present in an OPTIONS.
Various Authors [Page 48]
Internet Draft SIP October 26, 2001
OPEN ISSUE #197: What is based on
the semantic of this Contact
An Accept header field SHOULD be included to indicate URI it has received. By propagating URIs from the type core of
message body the UAC wishes
network to receive in the response.
Example OPTIONS request:
OPTIONS sip:carol@chicago.com SIP/2.0
Via: SIP/2.0/UDP 10.1.1.1:5060;branch=23411513a6
Via: SIP/2.0/UDP 10.1.3.3:5060
To: <sip:carol@chicago.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710@10.1.3.3
CSeq: 63104 OPTIONS
Contact: <sip:alice@10.1.3.3>
Accept: application/sdp
Contact-Length: 0
11.2 Processing its edges, redirection allows for considerable network
scalability.
A redirect server is logically constituted of OPTIONS Request
The response a server transaction
layer and a transaction user that has access to an OPTIONS is constructed using the standard rules
for a SIP response as discussed in location service of
some kind (see Section 8.2.7. The response code
chosen 10 for more on registrars and location
services). This location service is the same that would have been chosen had the request been
an INVITE. That is, effectively a 200 (OK) would be returned if the UAS is ready
to accept database containing
mappings between a call, single URI and a 486 (Busy Here) would be returned if the UAS is
busy, etc. This allows an OPTIONS request to be used to determine the
basic state set of a UAS, one or more alternative
locations at which the target of that URI can be an indication found.
A redirect server does not issue any SIP requests of whether its own. After
receiving a request other than CANCEL, the UAC
will accept an INVITE request.
Note that this use of OPTIONS has limitations due server gathers the differences in
proxy handling list of OPTIONS
alternative locations from the location service and INVITE requests. While a forked INVITE
can result in multiple 200 OK responses being returned, a forked
OPTIONS will only result in either returns a single 200 OK response, since
final response of class 3xx or it is
treated by proxies using refuses the non-INVITE handling. See Section 13.2.1 request. For well-
formed CANCEL requests, it SHOULD return a 2xx response. This
response ends the SIP transaction. The redirect server maintains
transaction state for an entire SIP transaction. It is the normative details.
Allow, Accept, Accept-Encoding, Accept-Language, and Supported header
fields SHOULD be present in
responsibility of clients to detect forwarding loops between redirect
servers.
When a 200 OK redirect server returns a 3xx response to an OPTIONS request.
A Contact header field MAY be present in a 200 OK response.
A Warning request, it
populates the list of (one or more) alternative locations into
Contact headers. An "expires" parameter to the Contact header field MAY be present.
A message body MAY may
also be sent, supplied to indicate the type lifetime of which is determined by the
Accept Contact data.
The Contact header in field contains URIs giving the OPTIONS request. new locations or
Various Authors [Page 49] 44]
Internet Draft SIP October 26, 2001
Example OPTIONS response (corresponding January 28, 2002
user names to the request in Section
11.1):
SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.1.1.1:5060;branch=23411513a6
Via: SIP/2.0/UDP 10.1.3.3:5060
To: <sip:carol@chicago.com>;tag=93810874
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710@10.1.3.3
CSeq: 63104 OPTIONS
Contact: <sip:carol@10.3.6.6>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE
Accept: application/sdp
Accept-Encoding: gzip
Accept-Language: en
Supported: foo
Content-Type: application/sdp
Contact-Length: 274
v=0
o=carol 28908764872 28908764872 IN IP4 10.3.6.6
s=-
t=0 0
c=IN IP4 10.3.6.6
m=audio 0 RTP/AVP 0 1 3 99
a=rtpmap:0 PCMU/8000
a=rtpmap:1 1016/8000
a=rtpmap:3 GSM/8000
a=rtpmap:99 SX7300/8000
m=video 0 RTP/AVP 31 34
a=rtpmap:31 H261/90000
a=rtpmap:34 H263/90000
12 Dialogs
A key concept for a user agent is that of a dialog. try, or may simply specify additional transport
parameters. A dialog
represents a peer- to-peer SIP relationship between a two user agents
that persists for some time. The dialog facilitates sequencing of
messages between 301 (Moved Permanently) or 302 (Moved Temporarily)
response may also give the user agents, and proper routing of requests
between both them. The dialog represents a context in which to
interpret SIP messages. The previous section discussed method
independent UA processing for requests same location and responses outside of username that was
targeted by the initial request but specify additional transport
parameters such as a
dialog. This section discusses how those requests and responses are
used different server or multicast address to construct a dialog, and then how subsequent requests and
responses are sent within a dialog.
Various Authors [Page 50]
Internet Draft SIP October 26, 2001
A dialog is identified at each UA with try, or
a dialog ID, which consists change of SIP transport from UDP to TCP or vice versa.
However, redirect servers MUST NOT redirect a Call-ID value, a local URI and local tag (together called the local
address), and request to a remote URI and remote tag (together called equal
to the remote
address). The dialog ID at each UA involved one in the dialog is not the
same. Specifically, Request-URI; instead, provided that the local URI and local tag at one UA are
identical does
not point to itself, the remote URI and remote tag at redirect server SHOULD proxy the peer UA. The tags
are opaque tokens that facilitate request to
the generation of unique dialog
IDs.
A dialog ID destination URI.
If a client is also associated with all responses, using an outbound proxy, and with any
request that contains proxy
actually redirects requests, a tag in the To field. The rules potential arises for computing
infinite redirection loops.
Note that the dialog ID of Contact header field MAY also refer to a message depend on whether the different
entity is a UAC or
UAS. than the one originally called. For example, a UAC, the Call-ID value of the dialog ID is set to the
Call-ID of the message, the remote address is set SIP call
connected to the To field of
the message, and the local address is set GSTN gateway may need to the From deliver a special informational
announcement such as "The number you have dialed has been changed."
A Contact response header field of can contain any suitable URI
indicating where the
message (these rules apply called party can be reached, not limited to both requests and responses). As one
would expect, SIP
URIs. For example, it could contain URIs for phones, fax, or irc (if
they were defined) or a UAS, mailto: (RFC 2368, [16]) URL.
The "expires" parameter of the Call-ID Contact header field indicates how
long the URI is valid. The value of the dialog ID parameter is set to a number
indicating seconds. If this parameter is not provided, the Call-ID value of
the message, Expires header field determines how long the remote address URI is set valid.
Implementations MAY treat values larger than 2**32-1 (4294967295
seconds or 136 years) as equivalent to 2**32-1. Malformed values
should be treated as equivalent to 3600.
Redirect servers MUST ignore features that are not understood
(including unrecognized headers, Required extensions, or even method
names) and proceed with the From
field redirection of the message, and session in question.
If a particular extension requires that intermediate devices support
it, the local address is set to extension MUST be tagged in the To Proxy-Require field of
the message.
A dialog contains certain pieces of state needed as well
(see Section 24.29).
9 Canceling a Request
The previous section has discussed general UA behavior for further message
transmissions within the dialog. This state consists generating
requests, and processing responses, for requests of the Call-ID, all methods. In
this section, we discuss a local sequence number (used to order requests from general purpose method, called CANCEL.
The CANCEL request, as the UA name implies, is used to its
peer), cancel a remote sequence number (used to order requests from its peer previous
Various Authors [Page 45]
Internet Draft SIP January 28, 2002
request sent by a client. Specifically, it asks the UAS to cease
processing the UA), request and to generate an error response to that
request. CANCEL has no effect on a route set, request to which is an ordered list a UAS has already
responded. Because of URIs. The
route set this, it is the set of servers that need most useful to be traversed CANCEL requests to send
which can take a
request long time to the peer. A dialog can also be in the "early" state, which
occurs when it respond. For this reason, CANCEL is created with
most useful for INVITE requests, which can take a long time to
generate a response. In that usage, a UAS that receives a CANCEL
request for an INVITE, but has not yet sent a provisional response, would "stop
ringing", and then
transition respond to the "established" state when the final response comes.
12.1 Creation of a Dialog
Dialogs are created through the generation of non-failure responses
to requests INVITE with a specific methods. Within this specification, only
the 2xx error
response (a 487).
CANCEL requests can be constructed and 1xx responses to INVITE establish a dialog. A dialog
established sent by any type of client,
including both proxies and user agent clients. Section 15 discusses
under what conditions a non-final response to a request is called UAC would CANCEL an early
dialog. Extensions MAY define other means for creating dialogs.
Section 13 gives more details that are specific to the INVITE method.
Here, we describe the process for creation request, and
Section 16.9 discusses proxy usage of dialog state that is
not dependent on the method.
12.1.1 UAS
When CANCEL.
Because a UAS stateful proxy can generate its own CANCEL, a stateful
proxy also responds to a request with CANCEL, rather than simply forwarding a
response that establishes it would receive from a
dialog (such downstream element. For that reason,
CANCEL is referred to as a 2xx "hop-by-hop" request, since it is
responded to INVITE), the UAS MUST copy all Record-Route
headers from the at each stateful proxy hop.
9.1 Client Behavior
A CANCEL request into the response, and MUST maintain SHOULD NOT be sent to cancel a request other than
INVITE.
Since requests other than INVITE are responded to
immediately, sending a CANCEL for a non-INVITE request
would always create a race condition.
The following procedures are used to construct a CANCEL request. The
Request-URI, Call-ID, To, the
order numeric part of those headers. This includes the URIs, URI parameters, CSeq and
Various Authors [Page 51]
Internet Draft SIP October 26, 2001
any Record-Route From header parameters, whether they are known or unknown
to
fields in the UAS. The UAS CANCEL request MUST add a Contact header field be identical to those in the response.
The Contact header field contains an address where
request being cancelled, including tags. A CANCEL constructed by a
client MUST have only a single Via header, whose value matches the UAS would like
to be contacted for subsequent requests
top Via in the dialog (which includes request being cancelled. Using the ACK same values for a 2xx response in
these headers allows the case of an INVITE). Generally, CANCEL to be matched with the
host portion of this URI is request it
cancels (Section 9.2 indicates how such matching occurs). However,
the IP address method part of the host, or its FQDN.
The URI provided in the Contact Cseq header MUST be have a SIP URL.
The UAS then constructs the state value of the dialog. CANCEL. This state MUST
allows it to be
maintained for the duration of identified and processed as a transaction in its own
right (See Section 17). If the dialog. First, request being cancelled contains
Route header fields, the route set CANCEL request MUST
be computed by following include these steps:
1. Route
header fields.
This is needed so that stateless proxies are able to route
CANCEL requests properly.
Various Authors [Page 46]
Internet Draft SIP January 28, 2002
The list of URIs in CANCEL request MUST NOT contain any Require or Proxy-Require
header fields.
Once the Record-Route headers in CANCEL is constructed, the
request, if present, are taken, including client SHOULD check whether any URI
parameters.
2. The URI in
response (provisional or final) has been received for the Contact header from request
being cancelled (herein referred to as the "original request"). The
CANCEL request MUST NOT be sent if present,
is taken, including any URI parameters. The URI is appended
to no provisional response has been
received, rather, the bottom of client MUST wait for the list arrival of URIs from a
provisional response before sending the previous step.
Contact was not mandatory in RFC2543. Thus, if request. If the UAS original
request has generated a final response, the CANCEL SHOULD NOT be
sent, as it is talking to an older UAC, the UAC might not effective no-op, since CANCEL has no effect on
requests that have
inserted already generated a final response. When the Contact header.
3. The resulting list of URIs is called
client decides to send the route set
These rules clearly imply that CANCEL, it creates a UA MUST be able to parse client transaction
for the CANCEL and process Record-Route header fields. This is a change
from RFC2543, where all record-route passes it the CANCEL request along with the
destination address, port, and route processing
was optional for user agents.
It is possible transport. The destination address,
port, and transport for the route set to CANCEL MUST be empty. This will occur if
neither Record-Route headers nor identical to those used to
send the original request.
If it was allowed to send the CANCEL before receiving a Contact header were present in
response for the previous request, the server could receive
the CANCEL before the original request. The UAS MUST also remember whether
Note that both the bottom-most entry in transaction corresponding to the route set was constructed from original request
and the CANCEL transaction will complete independently. However, a Contact header or not. This is
effectively
UAC canceling a boolean value, which we refer to request cannot rely on receiving a 487 (Request
Terminated) response for the original request, as CONTACT_SET. This an RFC 2543-
compliant UAS will not generate such a response. If there is needed in order no
final response for the UA to determine whether the bottom most
value can be updated from subsequent requests; if it was constructed
from a Contact, it can be updated.
The remote sequence number sequence number MUST be set to original request in 64*T1 seconds (T1 is
defined in Section 17.1.1.1), the value
of client SHOULD then consider the sequence number in
original transaction cancelled and SHOULD destroy the Cseq header of client
transaction handling the original request.
9.2 Server Behavior
The local
sequence number MUST be empty. The call identifier component of CANCEL method requests that the
dialog ID MUST be set TU at the server side cancel a
pending transaction. The transaction to be canceled is determined by
taking the value of CANCEL request, and then assuming that the Call-ID in request method
were anything but CANCEL, apply the request. The
local address component transaction matching procedures
of Section 17.2.3. The matching transaction is the dialog ID MUST be set one to be
canceled.
The processing of a CANCEL request at a server depends on the To field
in the response type of
server. A stateless proxy will forward it, a stateful proxy might
respond to it and generate some CANCEL requests of its own, and a UAS
will respond to it. See Section 16.9 for proxy treatment of CANCEL.
A UAS first processes the CANCEL request (which therefore includes according to the tag), general UAS
Various Authors [Page 52] 47]
Internet Draft SIP October 26, 2001 January 28, 2002
processing described in Section 8.2. However, since CANCEL requests
are hop-by-hop and cannot be resubmitted, they cannot be challenged
by the remote address component of server in order to get proper credentials in an Authorization
header field. Note also that CANCEL requests do not contain Require
header fields.
If the dialog ID MUST be set CANCEL did not find a matching transaction according to the
From field in
procedure above, the request. A UAS MUST CANCEL SHOULD be prepared responded to receive a
request without with a tag in 481 (Call
Leg/Transaction Does Not Exist). If the From field, in which case transaction for the tag is
considered to effectively have a value original
request still exists, the behavior of null.
This is to maintain backwards compatibility with RFC2543,
which did not mandate From tags.
12.1.2 UAC
When the UAS on receiving a UAC receives CANCEL
request depends on whether it has already sent a final response that establishes a dialog, it
constructs for
the state of original request. If it has, the dialog. This state MUST be maintained for CANCEL request has no effect on
the duration processing of the dialog. First, the route set MUST be computed by
following these steps:
1. The list of URIs present in the Record-Route headers in the
response are taken, if present, including all URI
parameters, original request, no effect on any session
state, and their order is reversed.
2. The URI in no effect on the Contact header from responses generated for the response, if
present, is taken, including all URI parameters, and
appended to original
request. If the end of UAS has not issued a final response for the list from original
request, its behavior depends on the previous step.
3. The list method of URIs resulting from the above two operations is
referred to as original request.
If the route set
It is possible for original request was an INVITE, the route set UAS SHOULD immediately
respond to be empty. This will occur if
neither Record-Route headers nor a Contact header were present in the
response. INVITE with a 487 (Request Terminated). The UAC MUST also remember whether the bottom-most entry in
the route set was constructed from behavior
upon reception of a Contact header or not. This CANCEL request for any other method defined in
this specification is effectively a boolean value, which we refer to as CONTACT_SET. This
is needed in order for the UA no-op. Extensions to determine whether the bottom most
value can be updated from subsequent requests; if it was constructed
from a Contact, it can be updated.
The local sequence number sequence number this
specification that define new methods MUST be set to define the value behavior of
the sequence number in the Cseq header a
UAS upon reception of the request. The remote
sequence number MUST be empty (it is established when the UA sends a
request within the dialog). The call identifier component CANCEL for those methods.
Regardless of the
dialog ID MUST be set to the value method of the Call-ID in original request, as long as the request. The
local address component of
CANCEL matched an existing transaction, the dialog ID MUST be set to CANCEL request itself is
answered with a 200 (OK) response. This response is constructed
following the From
field procedures described in Section 8.2.6 noting that the request, and the remote address component
To tag of the dialog
ID MUST be set response to the To field of CANCEL and the response. A UAC MUST be
prepared to receive a response without a To tag in the To field, in
which case response
to the tag is considered original request SHOULD be the same. The response to effectively have a value of null.
This CANCEL is
passed to maintain backwards compatibility with RFC2543,
which did not mandate To tags.
Various Authors [Page 53]
Internet Draft the server transaction for transmission.
10 Registrations
10.1 Overview
SIP October 26, 2001
12.2 Requests within offers a Dialog
Once discovery capability. If a dialog has been established between two UAs either of them MAY user wants to initiate new transactions as needed within the dialog. However, a
dialog imposes some restrictions on
session with another user, SIP must discover the use of simultaneous
transactions.
A TU MUST NOT initiate a new regular transaction within a dialog
while a regular transaction is in progress (in either direction)
within current host(s) that dialog.
OPEN ISSUE #113: Should we relax
the constraint on non-
overlapping regular transactions?
A refresh request sent within a dialog destination user is defined as a request that
can modify reachable at. This discovery process is
accomplished by SIP proxy servers, which are responsible for
receiving a request, determining where to send it based on knowledge
of the route set location of the dialog. For dialogs that have been
established with user, and then sending it there. To do this,
proxies consult an INVITE, abstract service known as a location service ,
which provides address bindings for a particular domain. These
address bindings map an incoming SIP URI, sip:bob@Biloxi.com , for
example, to one or more SIP URIs which are somehow "closer" to the only refresh request defined is re-
INVITE (see Section 14). Other extensions may define different
refresh requests
desired user, sip:bob@engineering.Biloxi.com , for dialogs established example.
Ultimately, a proxy will consult a location service which maps a
received URI to the current host(s) that a user is logged in other ways.
Note to.
Various Authors [Page 48]
Internet Draft SIP January 28, 2002
Registration creates bindings in a location service for a particular
domain that associate an ACK is NOT address-of-record URI with one or more
contact addresses. This means that when a refresh request.
12.2.1 UAC Behavior
12.2.1.1 Generating the Request
A request within proxy for that domain
receives a dialog is constructed by using many of the
components of request whose request URI matches the state stored as part of address-of-record,
the dialog.
The To header field of proxy will forward the request MUST be set to the remote address,
and the From header field MUST contact addresses
registered to that address-of-record. Generally, it only makes sense
to register an address-of-record at a location service for a domain
when requests for that address-of-record would be set routed to that
domain. In most cases, this means that the local address (both
including tags, assuming the tags are not null).
The Call-ID domain of the request MUST be set registration
will need to match the Call-ID of the dialog.
Requests within a dialog MUST contain strictly monotonically
increasing and contiguous CSeq sequence numbers (increasing-by-one) domain in each direction. Therefore, if the local sequence number is not
empty, the value URI of the local sequence number MUST be incremented address-of-record.
There are many ways by
one, and this value MUST placed into the Cseq header. If the local
sequence number is empty, an initial value MUST be chosen using which the
guidelines contents of Section 8.1.1.4. The method field in the Cseq header
MUST match the method of location service can
be established. One way is administratively. In the request.
With above example,
Bob is known to be a length member of 32 bits, a client could generate, within the engineering department through
access to a
single call, one request corporate database. SIP provides a second mechanism, however,
for about 136 years
before needing a user agent to wrap around. The initial value of the
Various Authors [Page 54]
Internet Draft SIP October 26, 2001
sequence number explicitly create a binding. This mechanism is chosen so that subsequent requests
within the same call will not wrap around. A non-zero
initial value allows clients
known as registration.
Registration entails sending a REGISTER request to use a time-based initial
sequence number. A client could, for example, choose the 31
most significant bits special type of a 32-bit second clock
UAS known as an
initial sequence number. a registrar. The Request-URI of requests is determined according registrar acts as a front end to the following
rules:
The UAC takes the list of URI in the route set inserted into
location service for a domain, reading and writing mappings based on
the
request URI contents of the request, including all URI parameters. Any URI
parameters not allowed in the request URI MUST REGISTER requests. This location service will
then be stripped. Each
of the remaining URIs (if any) from consulted by a proxy server that is responsible for routing
requests for that domain.
SIP does not mandate a particular mechanism for implementing the route set , including all URI
parameters,
location service. The only requirement is that a registrar for some
domain MUST be placed into a Route header field into the
request, in order.
A TU SHOULD follow the rules just mentioned able to read and write data to build the Request-URI location service,
and a proxy for that domain MUST be capable of reading that same
data. A registrar MAY be co-located with a particular SIP proxy
server for the request, regardless of whether same domain.
10.2 Constructing the UA uses REGISTER Request
REGISTER requests add, remove and query bindings. A REGISTER request
may add a new binding between an outbound proxy
server address-of-record and one or not. However, in some instances, more
contact addresses. Registration on behalf of a UA particular address-
of-record may not be willing performed by a suitably authorized third party. A
client may also remove previous bindings, or
capable of sending the request query to the top element determine which
bindings are currently in place for an address-of-record.
Except as noted, the route set is
not capable construction of DNS, and therefore may not be able to follow those
procedures. In these cases, the UA MAY send REGISTER request and the
behavior of clients sending a REGISTER request is identical to a local
outbound server. In this case, it MUST NOT remove the top Route
header.
In dialogs created by an INVITE, if the UA is
general UAC behavior described in Section 8.1 and Section 17.1. The
following header fields MUST be included:
Request-URI: The Request-URI names the caller,
it sets domain of the Request-URI to location
Various Authors [Page 49]
Internet Draft SIP January 28, 2002
service that the same value it used registration is meant for the
initial request, (e.g.,
"sip:chicago.com"). The "userinfo" and sends it to its local outbound server.
Bug#161: Which Request-URI does "@" components of
the callee use?
A UAC SHOULD include a Contact SIP URI MUST NOT be present.
To: The To header in any refresh requests within
a dialog, and unless there field contains the address of record whose
registration is a need to change it, the URI SHOULD be created, queried or modified. The To
header field and the same Request-URI field typically differ, as used in previous requests within
the dialog. As discussed
in Section 12.2.2, a Contact header in former contains a refresh request updates the
route set. user name. This allows a UA to provide address-of-record
MUST be a new contact address, should
its address change during SIP URI.
From: The From header field contains the duration address-of-record of
the dialog.
However, requests that are not refresh requests do not affect the
route set person responsible for the dialog.
Once the request has been constructed, registration. The value is
the address of same as the server is
computed and To header field unless the request is sent, using the same procedures for
requests outside of a dialog (Section 8.1.1).
12.2.1.2 Processing the Responses
Various Authors [Page 55]
Internet Draft SIP October 26, 2001
The UAC will receives responses to the request
third-party registration.
Call-ID: All registrations from the transaction
layer.
The behavior of a UAC that receives a 3xx response user agent client SHOULD use
the same Call-ID header value for a request registrations sent
within to a dialog is
particular registrar.
If the same as if the client were to use different Call-ID
values, a registrar could not detect whether a delayed
REGISTER request would might have been sent
outside a dialog. This behavior is described in Section 13.2.2.
Note however that when the UAC tries alternative locations
it still uses arrived out of order.
CSeq: The CSeq value guarantees proper ordering of REGISTER
requests. A UA MUST increment the route set CSeq value by one for
each REGISTER request with the dialog to build the
Route same Call-ID.
Contact: REGISTER requests contain zero or more Contact header of the request.
If a UAC has
fields, containing address bindings.
User agents MUST NOT send a route set for new registration (i.e., containing new
Contact header fields, as opposed to a dialog, and receives retransmission) until they
have received a 2xx final response to
a refresh it sent, from the registrar for the previous
one or the previous REGISTER request has timed out.
The following Contact header field of parameters have a special meaning in
REGISTER requests:
action: The "action" parameter from RFC 2543 has been
deprecated. UACs SHOULD NOT use the response is
examined. If not present, "action" parameter.
expires: The "expires" parameter indicates how long the route set remains unchanged. If UA would
like the
response had binding to be valid. The value is a Contact header field, and the boolean variable
CONTACT_SET number
indicating seconds. If this parameter is false, not provided, the URL in
value of the Contact Expires header field in the
response is added used instead.
Implementations MAY treat values larger than 2**32-1
(4294967295 seconds or 136 years) as equivalent to the bottom of the route set , and CONTACT_SET is
set 2**32-1.
Various Authors [Page 50]
Internet Draft SIP January 28, 2002
bob
+----+
| UA |
| |
+----+
|
|3)INVITE
| carol@chicago.com
chicago.com +--------+ V
+---------+ 2)Store|Location|4)Query +-----+
|Registrar|=======>| Service|<=======|Proxy|sip.chicago.com
+---------+ +--------+=======>+-----+
A 5)Resp |
| |
| |
1)REGISTER| |
| |
+----+ |
| UA |<-------------------------------+
cube2214a| | 6)INVITE
+----+ carol@cube2214a.chicago.com
carol
Figure 2: REGISTER example
Various Authors [Page 51]
Internet Draft SIP January 28, 2002
Malformed values should be treated as equivalent to true. If the refresh 3600.
10.2.1 Adding Bindings
The REGISTER request response had sent to a Contact header
field, and CONTACT_SET is true, registrar includes contact addresses
to which SIP requests for the URL address-of-record should be forwarded.
The address-of-record is included in the Contact To header field of the response to
REGISTER request.
The Contact header fields of the refresh request replaces the bottom value in typically contain SIP URIs
that identify particular SIP endpoints (for example,
"sip:carol@cube2214a.chicago.com"), but they MAY use any URI scheme.
A SIP UA can choose to register telephone numbers (with the route set is responded with tel URL,
[13]) or email addresses (with a non-2xx final response the route
set remains unchanged mailto URL, [16]) as if no refresh request had been issued.
If the response Contacts for the a request within a dialog is a 481
(Call/Transaction Does Not Exist) or a 408 (Request Timeout) the UAC
SHOULD terminate the dialog. an
address-of-record.
For INVITE initiated dialogs terminating example, Carol, with address-of-record "sip:carol@chicago.com",
would register with the dialog
consists SIP registrar of sending a BYE.
12.2.2 UAS behavior
The UAS will receive the request from the transaction layer. If the
request has domain chicago.com. Her
registrations would then be used by a tag proxy server in the To header field, the UAS core computes the
dialog identifier corresponding chicago.com
domain to the request and compares route requests for Carol's address-of-record to her SIP
endpoint.
Once a client has established bindings at a registrar, it with MAY send
subsequent registrations containing new bindings or modifications to
existing dialogs. If there is bindings as necessary. The 2xx response to the REGISTER
request will contain, in Contact header fields, a match, complete list of
bindings that have been registered for this is address-of-record at this
registrar.
Registrations do not need to update all bindings. Typically, a mid-dialog request.
In that case, UA
only updates its own SIP URI as well as any non-SIP URIs.
10.2.1.1 Setting the same processing rules for requests outside Expiration Interval of Contact Addresses
When a
dialog, discussed client sends a REGISTER request, it MAY suggest an expiration
interval that indicates how long the client would like the
registration to be valid. (As described in Section 8.2, are applied by the UAS once 10.3, the
request is received from
registrar selects the transaction layer.
Requests that do not change actual time interval based on its local
policy.)
There are two ways in any way the state of which a dialog may be
received within client can suggest an expiration
interval for a dialog (e.g., binding: through an OPTIONS request). They are
processed as if they had been received outside the dialog.
Requests within Expires header field, or an
"expires" Contact header parameter. The latter allows expiration
intervals to be suggested on a dialog MAY contain Record-Route and per-binding basis when more than one
binding is given in a single REGISTER request, whereas the former
suggests an expiration interval for all Contact header
fields. However, requests fields that are not refresh requests do
not update
the route set for contain the dialog. This specification only defines one
refresh request: re-INVITE (see Section 14). "expires" parameter.
Various Authors [Page 56] 52]
Internet Draft SIP October 26, 2001
Special rules apply when updated Record-Route or Contact header
fields are received inside a refresh request. January 28, 2002
If a UAS has a route
set neither mechanism for expressing a dialog, and receives suggested expiration time is
present in a refresh for that dialog containing
Record-Route header fields, it MUST copy those header fields into any
2xx response to that request. If the boolean variable CONTACT_SET REGISTER, a default suggestion of one hour is
true, the assumed.
10.2.1.2 Preferences among Contact header field Addresses
If more than one Contact is sent in a REGISTER request, the request (if present) replaces
registering UA intends to associate all of the last entry URIs given in these
Contact headers with the route set address-of-record present in the UAS MUST add To field.
This list can be prioritized with the URL "q" parameter in the Contact
header field in fields. The "q" parameter indicates a relative preference for
the re- INVITE particular Contact header field compared to other bindings
present in this REGISTER message or existing within the bottom location
service of the route set
, registrar. Section 16.5 describes how a proxy server
uses this preference indication.
10.2.2 Removing Bindings
Registrations are soft state and then set CONTACT_SET expire unless refreshed, but can
also be explicitly removed. A client can attempt to true. If influence the request did not contain
expiration interval selected by the registrar as described in Section
10.2.1. A user agent requests the immediate removal of a binding by
specifying an expiration interval of "0" for that contact address in
a REGISTER request. User agents SHOULD support this mechanism so that
bindings can be removed before their expiration interval has passed.
The REGISTER-specific Contact header field, the route-set at the UAS remains unchanged.
If the remote sequence number is empty, field value of "*" applies to
all registrations, but it MUST only be set to used when the Expires header
field is present with a value of "0".
Use of the sequence number in the Cseq "*" Contact header in the request. field value allows a
registering user agent to remove all of its bindings
without knowing their precise values.
If no Contact header fields are present in a REGISTER request, the
remote sequence number was not empty, but the sequence number
list of the
request bindings is lower than left unchanged.
10.2.3 Fetching Bindings
A success response to any REGISTER request contains the remote sequence number, complete list
of existing bindings, regardless of whether the request is out
of order and MUST be rejected with contained a 500 response. If
Contact header field or not.
10.2.4 Refreshing Bindings
Each UA is responsible to refresh the remote
sequence number was not empty, and bindings that it has previously
established. A UA SHOULD NOT refresh bindings set up by other UAs.
Various Authors [Page 53]
Internet Draft SIP January 28, 2002
The 200 (OK) response from the sequence number registrar contains a list of Contact
fields enumerating all current bindings. The UA compares each contact
address to see if it created the request
is greater than contact address, using. comparison
rules in Section 23.1.4. If so, it updates the remote sequence number, expiration time
interval according to the expires parameter or, if absent, the
Expires field value. The UA then issues a REGISTER request is in order.
It is possible for each
of its bindings before the CSeq header to be higher than expiration interval has elapsed. It MAY
combine several updates into one REGISTER request.
A UA SHOULD use the remote
sequence number by more than one. This is not an error condition, and same Call-ID for all registrations during a UAS
single boot cycle. Registration refreshes SHOULD be prepared sent to receive and process requests with CSeq
values more than one higher than the previous received request. The
UAS MUST then set same
network address as the remote sequence number to original registration, unless redirected.
10.2.5 Setting the value of Internal Clock
If the
sequence number in response for REGISTER request contains a Date header, the Cseq
client MAY use this header in field to learn the request.
12.3 Termination of current time in order
to set any internal clocks.
10.2.6 Discovering a Dialog
Dialogs Registrar
UAs can end use three ways to determine the address to send registrations
to: by configuration, using the address-of-record and multicast. A UA
can be configured, in several different ways, depending on ways beyond the method.
When a dialog is established with INVITE, it is terminated scope of this specification,
with a
BYE. No other means registrar address. If there is no configured registrar
address, the UA SHOULD use the host part of the address-of-record as
the Request-URI and address the request there, using the normal SIP
server location mechanisms [8]. For example, the UA for the user
"sip:carol@chicago.com" addresses the REGISTER request to terminate
"chicago.com".
Finally, a dialog are described in this
specification, but extensions UA can define other ways.
13 Initiating a Session
13.1 Overview
When a user agent client desires be configured to initiate a session (for example,
audio, video, or a game), it formulates an INVITE request. The INVITE
request asks a server use multicast. Multicast
registrations are addressed to establish a session. the well-known "all SIP servers"
multicast address "sip.mcast.net" (224.0.1.75 for IPv4). No well-
known IPv6 multicast address has been allocated; such an allocation
will be documented separately when needed. This request MUST be
scoped to ensure it is not forwarded by proxies, eventually arriving at one or more UAS which
can potentially accept the invitation. These UAS's will frequently
need to query the user about whether to accept the invitation. After
some time, those UAS can accept beyond the invitation (meaning boundaries of the session
is to
administrative system. This MAY be established) by sending a 2xx response. If the invitation is
not accepted, a 3xx,4xx,5xx done with either TTL or 6xx response is sent,
administrative scopes (see [17]), depending on what is implemented in
the
reason for the rejection. Before sending a final response, the UAS
can also send a provisional response (1xx) network. SIP user agents MAY listen to advise that address and use it to
become aware of the UAC location of
progress other local users (see [18]);
however, they do not respond to the request.
Multicast registration may be inappropriate in contacting some
environments, for example, if multiple businesses share the called user.
same local area network.
Various Authors [Page 57] 54]
Internet Draft SIP October 26, 2001
After possibly receiving one or more provisional responses, January 28, 2002
10.2.7 Transmitting a Request
Once the UA
will get one or more 2xx responses or one non-2xx final response.
Because of REGISTER method has been constructed, and the protracted amount destination of time it can take
the message identified, UACs should follow the procedures described
in Section 8.1.2 to receive final
responses hand off the REGISTER to INVITE, the reliability mechanisms for INVITE
transactions differ from those of other requests (like OPTIONS). Once
it receives transaction layer.
If the transaction layer returns a final timeout error because the REGISTER
yielded no response, the UAC needs send an ACK for every
final response SHOULD wait some reasonable time
interval before re-attempting a registration to the same registrar;
no specific interval is mandated.
10.2.8 Error Responses
If a UA receives a 423 (Registration Too Brief) response, it receives. The procedure for sending this ACK
depends on MAY
retry the type of response. For final responses between 300 and
699, registration after making the ACK processing is done expiration interval of all
contact addresses in the transaction layer, and follows
one set of rules (See Section 17). For 2xx responses, REGISTER request equal to or greater than
the ACK is
generated by expiration interval within the UAC core. Min-Expires header of the 423
(Registration Too Brief) response.
10.3 Processing REGISTER Requests
A 2xx response to an INVITE establishes a session, and it also
creates registrar is a dialog between the UA UAS that issued the INVITE responds to REGISTER requests and the UA maintains
a list of bindings that generated the 2xx response. Therefore, when multiple 2xx
responses are received from different remote UAs (because the INVITE
forked), each 2xx establishes accessible to proxy servers within its
administrative domain. A registrar handles requests according to
Section 8.2 and Section 17.2, but it accepts only REGISTER requests.
A registrar does not generate 6xx responses. If a different dialog. All these dialogs
are part of the same call.
This section provides details on the establishment of registrar listens
at a session using
INVITE.
13.2 Caller Processing
13.2.1 Creating the Initial INVITE
Since the initial INVITE represents multicast interface, it MAY redirect multicast REGISTER requests
to its own unicast interface with a 302 (Moved Temporarily) response.
A REGISTER request outside of a dialog,
its construction follows MUST NOT contain Record-Route or Route header
fields; registrars MUST ignore them if they appear.
A registrar must know (e.g., through configuration) the procedures set of Section 8.1.1. Additional
processing is required
domain(s) for the specific case of INVITE.
An Allow header field (Section 22.5) SHOULD which it maintains bindings. REGISTER requests MUST be present
processed by a registrar in the
INVITE. It indicates what methods can order that they are received.
REGISTER requests MUST also be invoked within a dialog, on
the UA sending the INVITE, for the duration of the dialog. For
example, a UA capable processed atomically, meaning that
REGISTER requests are either processed completely or not at all. Each
REGISTER message must be processed independently of any other
registration or binding changes.
When receiving INFO requests within a dialog [21]
SHOULD include an Allow header listing the INFO method.
A Supported header field (Section 22.35) SHOULD be present in the
INVITE. It enumerates all the extensions understood by the UAC.
An Accept (Section 22.1) header field MAY be present in REGISTER request, a registrar follows these steps:
1. The registrar inspects the INVITE.
It indicates which content-types are acceptable Request-URI to determine whether
it has access to bindings for the UA, domain identified in both the response received by it,
Request-URI. If not and in any subsequent requests sent to
it within dialogs established by if the INVITE. The Accept header is
especially useful for indicating support of various session
description formats.
The UA MAY add an Expires header field (Section 22.19) to limit server also acts as a proxy
server, the
validity of server SHOULD forward the invitation. If request to the time indicated in
addressed domain, following the Expires general behavior for
proxying messages described in Section 16.
Various Authors [Page 58] 55]
Internet Draft SIP October 26, 2001 January 28, 2002
2. To guarantee that the registrar supports any necessary
extensions, the registrar processes Require header field is reached and no final answer fields
as described for UASs in Section 8.2.2.
3. A registrar SHOULD authenticate the INVITE has been
received UAC. Mechanisms for the UAC core SHOULD generate a CANCEL request
authentication of SIP user agents are described in Section
20; registration behavior in no way overrides the generic
authentication framework for SIP. If no authentication
mechanism is available, the
original INVITE.
A UAC registrar MAY also find useful to add, among others, Subject (Section
22.34), Organization (Section 22.24) and User-Agent (Section 22.39)
header fields. They all contain useful information related to take the
INVITE.
The UAC MAY choose to add a message body to From
address as the INVITE. Section
8.1.1.9 deals with how to construct asserted identity of the header fields- Content-Type
among others- needed to describe originator of the message body.
There are special rules
request.
4. The registrar SHOULD determine if the authenticated user is
authorized to modify registrations for message bodies that contain this address-of-
record. For example, a session
description - their corresponding Content-Disposition is "session".
SIP uses an offer/answer model where one UA sends registrar might consult a session
description, called the offer, which contains
authorization database that maps user names to a proposed description list of
addresses-of-record for which this identity is authorized
to modify bindings. If not, the session. registrar returns 403
(Forbidden) and skips the remaining steps.
In architectures that support third-party
registration, one entity may be responsible for
updating the registrations associated with multiple
addresses-of-record.
5. The offer indicates registrar extracts the desired communications means
(audio, video, games), parameters address-of-record from the To
header field of those means (such as codec
types) and addresses request. If the address-of-record is not
valid for receiving media from the offerer. The other
UA responds with another session description, called domain in the answer,
which indicates which communications means are accepted, Request-URI, the
parameters which apply to those means, registrar
sends a 404 (Not Found) response and addresses for receiving
media from skips the answerer. remaining
steps. The offer/answer model can be mapped into URI MUST then converted to a canonical form. To
do that, all URI parameters are removed (including the INVITE transaction in two ways. user
param), and any escaped characters are converted to their
unescaped form. The first, which is result serves as an index into the most
intuitive, is that list
of bindings.
6. The registrar checks whether the INVITE request contains any
Contact header fields. If not, it skips to the offer, last step.
Next, the 2xx response registrar checks if there is one Contact field
that contains the answer, special value "*" and no session description is provided in a Expires field. If
the
ACK. In this model, request has additional Contact fields or an expiration
time other than zero, the UAC request is invalid and the offerer, server
returns 400 (Invalid Request) and skips the UAS is remaining
steps. If not, the
answerer. A second model is that registrar checks whether the INVITE contains no session
description, Call-ID
agrees with the 2xx response contains value stored for each binding. If not, it
removes the offer, and binding. If it does agree, it only removes the ACK
contains
binding if the answer. In this model, CSeq in the UAS request is higher than the offerer, value
Various Authors [Page 56]
Internet Draft SIP January 28, 2002
stored for that binding and leaves the
UAC binding as is
otherwise. It then skips to the answerer. last step.
7. The second model is useful for gateways from
H.323v1 to SIP, where registrar now processes each contact address in the H.323 media characteristics are not known
until
Contact header field in turn. For each address, it
determines the call expiration interval as follows:
- If the field value has an "expires" parameter, that value
is established. This used.
- If there is also useful for sessions no such parameter, but the request has an
Expires header field, that
use third-party call control. As value is used.
- If there is neither, a result of these models, locally-configured default value
is used.
The registrar MAY shorten the expiration interval. If and
only if the
INVITE contains expiration interval is greater than zero AND
smaller than one hour AND less than a session description, registrar-configured
minimum, the ACK MUST NOT contain one.
Conversely, if registrar MAY reject the caller chooses registration with a
response of 423 (Registration Too Brief). This response
MUST contain a Min-Expires header field that states the
minimum expiration interval the registrar is willing to omit
honor. It then skips the session description in remaining steps.
Allowing the INVITE, registrar to set the ACK MUST contain one (if registration
interval protects it against excessively frequent
registration refreshes while limiting the state that
it needs to maintain and decreasing the likelihood of
registrations going stale. The expiration interval of
a 2xx response registration is frequently used in the creation of
services. An example is received).
2xx responses to an INVITE MUST always contain a session description.
All follow-me service, where the
user agents that support INVITE MUST support both models.
The Session Description Protocol (SDP) [6] MUST may only be supported by all
user agents as available at a means to describe sessions, and its usage terminal for
construction offers and answers MUST follow a brief
period. Therefore, registrars should accept brief
registrations; a request should only be rejected if
the procedures defined in
[22].
Note interval is so short that the restrictions of refreshes would
degrade registrar performance.
For each address, it then searches the offer-answer model (session
description only in list of current
bindings using the INVITE OR in URI comparison rules. If the ACK, but binding
does not in both) just
Various Authors [Page 59]
Internet Draft SIP October 26, 2001
described only apply to bodies whose Content-Disposition header field
is "session". Therefore, exist, it is possible that both tentatively added. If the INVITE and binding
does exist, the
ACK contain a body message (e.g., registrar checks the INVITE carries a photo
(Content-Disposition: render) Call-ID value. If the
existing binding has the same Call-ID value differs from
the request, the binding is removed if the expiration time
is zero and updated otherwise. If they are the ACK a session description
(Content-Disposition: session) ). same, the
registrar compares the CSeq value. If the Content-Disposition header field value is missing, bodies higher
than that of Content-Type application/sdp imply the disposition
"session", while other content types imply "render".
Once existing binding, it updates or removes
Various Authors [Page 57]
Internet Draft SIP January 28, 2002
the INVITE has been created, binding as above. If not, the UAC follows update is aborted and the procedures
defined for sending requests outside of a dialog (Section 8).
request fails.
This
results in the construction of a client transaction algorithm ensures that will
ultimately send out-of-order requests from
the request same UA are ignored.
Each binding record records the Call-ID and deliver responses CSeq values
from the request.
The binding updates are committed (i.e., made visible to
the UAC. proxy) if and only if all binding updates and additions
succeed. If a UA A sends an INVITE any one of them fails, the request to B fails with
500 (Server Error) response and receives all tentative binding
updates are removed.
8. The registrar returns a 200 (OK) response. The response
MUST contain Contact header fields enumerating all current
bindings. Each Contact value MUST feature an INVITE request
from B before it has received "expires"
parameter indicating its expiration interval chosen by the
registrar. The response to its request from B, A
MAY return a 500 (Internal Server Error), which SHOULD include a
Retry- After Date header field specifying when the request should be
resubmitted.
13.2.2 Processing INVITE Responses
Once the INVITE has been passed to the INVITE client trasaction, the
UAC waits
field.
11 Querying for responses for the INVITE. Responses are matched Capabilities
The SIP method OPTIONS allows a UA to
their corresponding INVITE because they have the same Call-ID, the
same From header field, the same To header field, excluding query another UA or a proxy
server as to its capabilities. This allows a client to discover
information about the tag,
and methods, content types, extensions, codecs etc.
supported without actually "ringing" the same CSeq. Rules for comparisons of these headers are
described in Section 22.
13.2.2.1 1xx responses
Zero, one or multiple provisional responses may arrive other party. For example,
before one or
more final responses are received. Provisional responses for an
INVITE request can create "early dialogs". If a provisional response
has client inserts a tag in Require header field into an INVITE listing
an option that it is not certain the To field, and if destination UAS supports, the dialog ID of
client can query the response does
not match destination UAS with an existing dialog, one OPTIONS to see if this
option is constructed using the procedures
defined returned in Section 12.1.0.2. a Supported header field.
The early dialog will only be needed if target of the UAC needs to send a OPTIONS request to its peer within is identified by the dialog before Request-URI,
which could identify another User Agent or a SIP Server. If the initial INVITE
transaction completes. Header fields present in
OPTIONS is addressed to a provisional
response are applicable for proxy server, the duration of Request-URI is set
without a user part, similar to the early dialog (e.g., way a Request-URI is set for a
REGISTER request. Alternatively, a server receiving an Allow header field in OPTIONS
request with a provisional response contains Max-Forwards header value of 0 MAY respond to the methods
that
request regardless of the Request-URI.
This behavior is common with HTTP/1.1. This behavior can be
used in as a "traceroute" functionality to check the early dialog).
13.2.2.2 3xx responses
capabilities of individual hop servers by sending a series
of OPTIONS requests with incremented Max-Forwards values.
As is the case for general UA behavior, the transaction layer can
Various Authors [Page 60] 58]
Internet Draft SIP October 26, 2001
A 3xx response may contain January 28, 2002
return a Contact header field providing new
addresses where the callee might be reachable. Depending on the
status code of timeout error if the 3xx response (see Section 23.3) OPTIONS yields no response. This may
indicate that the UAC target is unreachable and hence unavailable.
An OPTIONS request MAY choose be sent as part of an established dialog to try those new addresses.
13.2.2.3 4xx, 5xx and 6xx responses
A single non-2xx final response
query the peer on capabilities that may be received for utilized later in the INVITE. 4xx,
5xx and 6xx responses may contain
dialog.
11.1 Construction of OPTIONS Request
An OPTIONS request is constructed using the standard rules for a SIP
request as discussed Section 8.1.1.
A Contact header field indicating
the location where additional information about the error can MAY be
found.
All early dialogs are considered terminated upon reception of the
non-2xx final response.
After having received present in an OPTIONS.
An Accept header field SHOULD be included to indicate the non-2xx final response type of
message body the UAC core
considers the INVITE transaction completed. The INVITE client
transaction handles generation of ACKs for wishes to receive in the response (see Section
17).
13.2.2.4 2xx responses
Multiple 2xx responses may arrive at the UAC for a single INVITE
request due response. Typically,
this is set to a forking proxy. Each response format that is distinguished by the
tag parameter in used to describe the To header field, and each represents a distinct
dialog, with media
capabilities of a distinct dialog identifier.
If the dialog identifier in the 2xx UA, such as SDP (application/sdp).
The response matches the dialog
identifier of to an existing dialog, the dialog MUST be transitioned OPTIONS request is assumed to
the "established", and the route set for the dialog MUST be
recomputed based on the 2xx response using scoped to the procedures of Section
12.1.0.2. Otherwise, a new established dialog is constructed
Request-URI in the
same fashion.
The route set original request. However, only when an OPTIONS is recomputed for backwards
compatibility. RFC 2543 did not mandate mirroring of
Record-Route headers in a 1xx, only 2xx. However, we cannot
update the entire state
sent as part of the dialog, since mid-dialog an established dialog is it guaranteed that future
requests may have been sent within will be received by the early call leg,
modifying server which generated the sequence numbers, for example. OPTIONS
response.
Example OPTIONS request:
OPTIONS sip:carol@chicago.com SIP/2.0
Via: SIP/2.0/UDP 192.0.2.4;branch=z9hG4bKhjhs8ass877
To: <sip:carol@chicago.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 63104 OPTIONS
Contact: <sip:alice@192.0.2.4>
Accept: application/sdp
Content-Length: 0
11.2 Processing of OPTIONS Request
The UAC core MUST generate response to an ACK request for each 2xx received from
the transaction layer. The header fields of the ACK are OPTIONS is constructed
in using the same way as standard rules
for any request sent within a dialog (see SIP response as discussed in Section
12) with the exception of the CSeq. 8.2.6. The sequence number of the CSeq
header field MUST be