Response Codes Regarding URIs that Cannot Be Routed to a Destination in the Session Initiation Protocol (SIP) Pingtel Corp.
400 West Cummings Park, Suite 2200 Woburn MA 01801 US +1 781 938 5306 x173 dworley@pingtel.com http://www.pingtel.com
Transport SIP The Session Initiation Protocol (SIP) provides a number of response codes which a SIP agent can use to indicate that it cannot find a suitable destination to which to send a request. Unfortunately, this set of response codes was not carefully designed, making it difficult in many cases for a proxy to select a response code that accurately reflects the proxy's knowledge about the request URI. This document describes these response codes and their current usage.
This section lists the existing response codes that can be used by an agent to indicate that it cannot find a destination for a request-URI, and their definitions in .
The server has definitive information that the user does not exist at the domain specified in the Request-URI. This status is also returned if the domain in the Request-URI does not match any of the domains handled by the recipient of the request. It is not clear what the statement "the user does not exist at the domain" means. If it were to just mean that the agent has no contacts for the request-URI, then it would be redundant, since if there were contact points, no 4xx class response would be generated. So it appears to be intended that the agent should have a database of "existing users", some of which might not have contact points at presenct, and the 404 response means that the user-part of the request-URI was in the database.
The requested resource is no longer available at the server and no forwarding address is known. This condition is expected to be considered permanent. If the server does not know, or has no facility to determine, whether or not the condition is permanent, the status code 404 (Not Found) SHOULD be used instead. The 410 response indicates that the agent has no contact for the request-URI and that it has knowledge that it will not have a contact in the future.
The callee's end system was contacted successfully but the callee is currently unavailable (for example, is not logged in, logged in but in a state that precludes communication with the callee, or has activated the "do not disturb" feature). The response MAY indicate a better time to call in the Retry-After header field. The user could also be available elsewhere (unbeknownst to this server). The reason phrase SHOULD indicate a more precise cause as to why the callee is unavailable. This value SHOULD be settable by the UA. Status 486 (Busy Here) MAY be used to more precisely indicate a particular reason for the call failure. This status is also returned by a redirect or proxy server that recognizes the user identified by the Request-URI, but does not currently have a valid forwarding location for that user. It is not clear what is meant by "not logged in", as the obvious meaning for "logged in" would be "having a registered contact". But given that it says "the callee's end system was contacted successfully", it seems that the 480 response is to be used by a UA to indicate "do not disturb" status and similar situations. Within this interpretation, the 480 response is not to be used by proxies, only UAs.
The server has authoritative information that the user indicated in the Request-URI does not exist anywhere. This description is similar to the description of the 404 response in that it talks of the "existence" of "users". But it suffers from the deficiency of all 6xx class responses, in that it terminates all forks of the request, and an agent cannot have the knowledge needed to do so legitimately, because it cannot know the URIs through which the request was forwarded to it.
Some examples of the problematic 480 response code are given in RFCs: shows two examples: (1) a proxy responding 480 to report that it got no response from the destination UA, and (2) a UA responding 480 to report unwillingness to take the call (reason unspecified). (The first example seems incorrect, and I wonder if it should have been 408?) , , and show response code 480 to report a variety of call failure situations (including "ring no answer") in interworking with the PSTN. The caller preferences system ( and ) uses a 480 response that there are no acceptable contacts according to the caller preferences in the request.
Setting aside the 604 response (because it is a 6xx class response), we have the 404, 410, and 480 responses for use by proxies. The first deficiency is that both of these responses assert more than that there is no contact for the request-URI. The 404 response asserts that the request-URI identifies a user, and that user is not contained in a defined set of users. The 410 response asserts that there will not be a contact for the request-URI in the future as well. The 480 response appears to assert that the identified user is contained in a defined set of users. The result is that there is no way for an agent to assert the absence of contacts for a request-URI without asserting additional facts about the request-URI (which it may not possess).
The only known security consideration for this topic is a matter of privacy: When a call is not routable to a destination, the response code may provide more information about the targeted user than just the fact of non-routability. Under some circumstances, this might be a breach of the user's privacy.
SIP: Session Initiation Protocol Session Initiation Protocol (SIP) Basic Call Flow Examples Integrated Services Digital Network (ISDN) User Part (ISUP) to Session Initiation Protocol (SIP) Mapping Session Initiation Protocol (SIP) Public Switched Telephone Network (PSTN) Call Flows Interworking between the Session Initiation Protocol (SIP) and QSIG Caller Preferences for the Session Initiation Protocol (SIP) Guidelines for Usage of the Session Initiation Protocol (SIP) Caller Preferences Extension