ietf-corpus

rfc-3327

Session Initiation Protocol (SIP) Extension Header Field for Registering Non-Adjacent Contacts

D. Willis, B. Hoeneisen
date2002-12 streamIETF arearai wgsip statusPROPOSED STANDARD pages17 canonicalhttps://www.rfc-editor.org/rfc/rfc3327 doi10.17487/RFC3327 errataview
The REGISTER function is used in a SIP system primarily to associate a temporary contact address with an address-of-record. This contact is generally in the form of a URI, such as Contact: <sip:alice@pc33.atlanta.com> and is generally dynamic and associated with the IP address or hostname of the SIP UA. The problem is that network topology may have one or more SIP proxies between the UA and the registrar, such that any request travelling from the user's home network to the registered UA must traverse these proxies. The REGISTER method does not give us a mechanism to discover and record this sequence of proxies in the registrar for future use. This document defines an extension header field, 'Path' which provides such a mechanism

updated by

Extracted elements (25)

design-rationale §6

Path accumulates hop-by-hop during REGISTER request processing but is returned end-to-end in the response without modification by intermediate proxies. This asymmetry motivates two different security approaches: hop-by-hop integrity (TLS/IPsec) for the request path and end-to-end protection (S/MIME) for the response.

sip, security, realtime

design-rationale §4

Path differs from Record-Route in that Path applies to REGISTER requests and 200-class responses to REGISTER, whereas Record-Route cannot be defined for REGISTER due to backward compatibility constraints. Additionally, a Record-Route vector applies only to requests within the dialog that established it, while a Path vector applies to all future dialogs routed through the home proxy.

sip, realtime

design-rationale §1

The Path mechanism was designed in response to 3GPP requirements where network topology places intermediate proxies between a UA and its registrar that are not discoverable via SIP routing tables, DNS, or similar mechanisms. The path must be explicitly recorded during REGISTER so the home proxy can reconstruct the reverse route for inbound requests.

sip, realtime

design-rationale §4

The registrar reflects the accumulated Path back into the REGISTER response so that the originating UA is informed of which intermediate proxies have been inserted into its registered path. This transparency allows the UA to detect proxies that have inappropriately added themselves to the routing chain.

sip, security, realtime

interoperability-note §5.1

A UA MAY include a Path header field in a REGISTER request, but caution is required: intermediate proxies will treat the UA-inserted value as if it were inserted by a previously traversed proxy, which could result in unexpected routing behavior where the UA is asked to act as a proxy.

sip, realtime

interoperability-note §5.4

Loose routes may interact with routing policy in non-obvious ways at the home proxy. The stored path vector is generally appended to any locally configured route needed to egress the service cluster; the combination must provide valid routing in the local environment. The service proxy MAY transform the stored path vector as needed.

sip, realtime

interoperability-note §4

Support for the Path header field MAY be indicated by a UA by including the option-tag "path" in a Supported header field. The Path header field is allowed only in REGISTER requests (column 'R') and 200-class responses to REGISTER; it is not applicable to ACK, BYE, CANCEL, INVITE, or OPTIONS methods.

sip, realtime

normative-requirement §5.1 SHOULD

A UA SHOULD include the option tag "path" as a header field value in all Supported header fields, and SHOULD include a Supported header field in all requests.

sip, realtime

normative-requirement §5.3 REQUIRED

If a Path header field exists in a successful REGISTER request, the registrar constructs an ordered path vector from the Path header field values (preserving order), stores it with the contact and address-of-record binding, and copies the Path header field values into the successful 200-class REGISTER response.

sip, realtime

normative-requirement §5.2 SHOULD

If the UA has indicated Path support and the proxy requires the registrar to support the Path extension, the proxy SHOULD insert a Requires header field value for this extension. If the UA has not indicated support but proxy requires it, the proxy SHOULD reject with a 421 response.

sip, realtime

normative-requirement §5.2 SHOULD NOT

Intermediate proxies SHOULD NOT add a Path header field to a REGISTER request unless the UA has indicated support for this extension via a Supported header field value.

sip, realtime

normative-requirement §4 MUST

Path header field values MUST include the loose-routing indicator parameter ";lr" for full compliance with RFC 3261.

sip, realtime

normative-requirement §5.2 SHOULD NOT

Proxies processing a REGISTER response SHOULD NOT alter any Path header field values present in the response. Proxies SHOULD only consider altering the Path value if they have credentials to correctly alter the S/MIME body to account for the change.

sip, realtime

normative-requirement §6.2 SHOULD

Registrars returning a Path header field SHOULD attach a signed S/MIME of the response, and UAs receiving a REGISTER response containing a Path header field SHOULD validate the message using S/MIME. UAs SHOULD render the Path header field to the user or check it programmatically.

sip, security, realtime

normative-requirement §6.1 SHOULD

Systems using the Path mechanism SHOULD use appropriate mechanisms (TLS, IPSEC, etc.) to provide message integrity and mutual authentication. UAs SHOULD use "sips:" URIs to request transitive protection.

sip, security, realtime

normative-requirement §6.1 SHOULD

The registering UA SHOULD use S/MIME mechanisms to provide a protected copy of the original request to the registrar, including a Supported header field indicating Path support in the protected copy. Registrars receiving such a request MUST honor the Path extension only if support is indicated in the protected header field.

sip, security, realtime

normative-requirement §5.3 RECOMMENDED

When a registrar receives a REGISTER with a Path header field but no indication of UA support, the recommended policy is to reject with 420 'Bad Extension', allowing the UA to detect that an intermediate proxy has inappropriately added Path. However, some registrars MAY choose to accept the extension anyway.

sip, realtime

protocol-element §5.2

An intermediate proxy wishing to be on the path for future requests inserts a URI referencing itself as the topmost value in the Path header field before forwarding the REGISTER request. A proxy with specific topology knowledge MAY also insert a Path value referencing another node, allowing construction of a path discongruent with the REGISTER route.

sip, realtime

protocol-element §5.4

The home proxy, upon receiving a request targeted to a registered AOR, copies the stored path vector from the registrar database into the Route header field of the outgoing request as a preloaded route, inserting the stored path vector ahead of any existing Route header field values.

sip, realtime

protocol-element §4

The Path header field is a SIP extension header with syntax similar to Record-Route. It is used in REGISTER requests and 200-class REGISTER responses to accumulate the list of intermediate proxies between a UA and its registrar, enabling future requests to traverse the same proxies.

sip, realtime

registry §7

IANA has added the SIP extension header field "Path" to the registry of SIP header fields defined in RFC 3261. RFC Number: RFC3327; Header Field Name: Path; Compact Form: none.

sip, registry, realtime

registry §7

IANA has added the SIP option tag "path" to the registry of SIP option tags defined in RFC 3261. RFC Number: RFC3327; Option Tag: path.

sip, registry, realtime

security-consideration §6.1

An attacker that can insert itself into the Path chain during REGISTER processing can intercept all future calls intended for the UA. Node insertion attacks may be accomplished by altering data on the wire or through proxy impersonation; TLS or IPsec mitigates wire-level attacks while mutual authentication at the proxy layer addresses proxy insertion.

sip, security, realtime

security-consideration §6.2

The Path header field returned in the REGISTER response provides transparency to the UA about which proxies will be included in future requests. S/MIME end-to-end protection of the REGISTER response prevents intermediate proxies from tampering with the returned Path and enables the UA to detect node insertion attacks.

sip, security, realtime

wire-format §4

Path header field syntax: 'Path = "Path" HCOLON path-value *( COMMA path-value )' where 'path-value = name-addr *( SEMI rr-param )'. Values conform to the Route element syntax defined in RFC 3261.

sip, realtime