SIP Interface Specifications
SIP Interface Specifications
SIP Interface Specifications
This document is a review of all the SIP related RFCs referenced by IMS (in particular TS 24.229 Rel
10), particularly how they relate to Clearwater’s SIP support. The bulk of the document goes through
the RFCs grouped in the following 4 categories.
RFCs already supported by Clearwater (at least sufficient for IMS compliance for Clearwater
as a combined P/I/S-CSCF/BGCF/IBCF).
RFCs partially supported by Clearwater.
RFCs that are relevant to Clearwater but not currently supported.
RFCs relevant to media processing, which Clearwater doesn’t currently need to handle as it is
not involved in the media path.
RFCs that are not relevant to Clearwater.
SIP proxy
From the SIP RFC:
Proxy, Proxy Server: An intermediary entity that acts as both a server and a client for the purpose of making
requests on behalf of other clients. A proxy server primarily plays the role of routing, which means its job is to
ensure that request is sent to another entity “closer” to the targeted user. Proxies are also useful for enforcing policy
(for example, making sure a user is allowed to make a call). A proxy interprets, and, if necessary, rewrites specific
SIP proxies are elements that route SIP requests to user agent servers and SIP responses to user agent clients. A
request may traverse several proxies on its way to a UAS. Each will make routing decisions, modifying the request
before forwarding it to the next element. Responses will route through the same set of proxies traversed by the
request in the reverse order.
With DNS SRV records you bind a SIP proxy to a specific domain, to enable URL calling to domains, instead of
Supported
The following RFCs are already supported by Clearwater. Note that a number of these are supported
simply because they require no active function from SIP proxies other than forwarding headers
unchanged.
the 6 basic methods (ACK, BYE, CANCEL, INVITE, OPTIONS and REGISTER)
the 44 basic headers
the transaction and dialog state machines
the function of UACs, UASs, stateful and stateless proxies, and registrars
basic and digest security
transport over UDP and TCP.
o Clearwater supports this RFC.
These two RFCs define a framework for generating and distributing event notifications in a SIP
network. They cover the SUBSCRIBE and NOTIFY methods and Allow-Events and Event headers
(RFC 3265) and the PUBLISH method and SIP-Etag and SIP-If-Match headers (RFC 3903).
Routing of these messages is largely transparent to proxies, so is largely already supported by
proxy function in Clearwater.
Defines UPDATE method used to update session parameters (so can be used as an
alternative to reINVITE as a keepalive, for media renegotiation or to signal successful resource
reservation). Often used by ICE enabled endpoints to change media path once ICE probing phase
has completed.
Supported transparently by Clearwater.
Defines headers that allow a UE to select which identity it wants to use on a call-by-call basis.
Ties in with authentication and the P-Associated-URIs header defined in RFC 3455 (see below).
Clearwater supports these headers.
Defines handling of registrations from devices which are not adjacent (in SIP routing terms) to
the registrar.
Supported by Clearwater.
Defines how SIP responses should be routed to ensure they traverse NAT pinholes.
Mandatory for IMS proxy components.
Supported by Clearwater nodes.
Call transfer, multiparty call control (REFER method and related headers) (RFC
3515, RFC 3891, RFC 3892, RFC 3911)
Covers REFER method, Refer-To header and event packages for transferring referral state
(RFC 3515), Replaces header (RFC 3891), Referred-By header (RFC 3892), Join header (RFC
3911), Refer-Sub header (RFC 4488), and the Target-Dialog header (RFC 4538).
Transparent to proxies, so supported by Clearwater - although needs support for GRUUs
(introduced in the Ninja Gaiden release) to work in all use cases.
Service-Route header (RFC 3608)
Defines a mechanism for using DNS look-ups to translate telephone numbers into SIP URIs.
(RFC 3761 defines ENUM, RFC 4769 contains IANA registrations for ENUM data.)
IMS specifies that ENUM is one mechanisms an S-CSCF can use to translate non-routable
URIs (either Tel URIs or SIP URIs encoding a phone number) into a globally routable URI (one
where the domain name/IP address portion of the URI can safely be used to route the message
towards its destination).
Clearwater supports this through function in Sprout.
Defines an event package that can be used to subscribe to the list of watchers for another
event type.
IMS mandates support for this package for subscribing to the list of watchers of a particular
presentity, so support is only applicable for SIP UEs supporting presence and presence
application servers.
Transparent to proxies, so supported by Clearwater.
Covers periodic reINVITE or UPDATE messages used to allow UEs or call stateful proxies to
detect when sessions have ended. Includes Min-SE and Session-Expires headers, which are
used to negotiate the frequency of keepalives.
Clearwater supports session-expiry as a proxy per section 8 of the RFC. It does not have a
minimum acceptable session interval, so does not make use of the Min-SE header, though does
honor it.
Clearwater requests a session interval of 10 minutes (or as close to 10 minutes as possible
given pre-existing headers) in order to properly perform session-based billing.
Defines a new value for the Content-Disposition header to indicate when SDP negotiation
applies to early media.
Optional according to TS 24.229.
Transparent to proxies so supported by Clearwater.
These RFCs define three different ways of controlling the function of an MRFC from an
AS. RFC 4240 is a simple “play an announcement” service, RFC 5552 uses VoiceXML and RFC
6230/RFC 6231/RFC 6505 use SIP/SDP to establish a two-way control channel between the AS
and MRFC.
IMS allows any of the three mechanisms to be used, or combinations depending on
circumstances.
All three mechanisms are transparent to proxy components, so supported by Clearwater.
Primarily aimed at ASs - need to manipulate History-Info headers when diverting calls. The
MMTEL AS built into Sprout already supports this for CDIV.
Also, need to proxy History-Info headers transparently. Clearwater supports this.
However, s9.1 says if the incoming H-I is missing or wrong, the intermediary must add an entry
on behalf of the previous entity. Clearwater does not currently do this so if other parts of the
network are not compliant, Clearwater will not fill in for them (and should).
Covers poc-settings event package (RFC 4354), P-Answer-State header (RFC 4964) and P-
Refused-URI-List header (RFC 5318)
Only required for OMA push-to-talk over cellular service.
Optional according to TS 24.229.
Transparent to proxies, so supported by Clearwater.
Defines an event package for various events associated with SIP conferences.
Mandatory for UEs and IMS application servers providing conference services.
Transparent to proxies, so supported by Clearwater.
Defines a framework for obtaining consent for routing traffic towards a SIP entity, including
Permission-Missing and Trigger-Consent headers, SIP MESSAGE methods sent via store-and-
forward relay to request consents and an event package (ie. a lot of extra SIP!).
In theory could be applicable to registrations in IMS (guarding against a user maliciously
redirecting their incoming calls or messages to another user’s device) or to CDIV type services.
Mandatory according to TS 24.229 - but not clear exactly what is required, could be as simple
as just forwarding headers transparently, or it could be required to support consent for
registrations.
Reading Rel 9, this strongly suggests that the only nodes that need to actually invoke these
mechanisms certain types of application servers, such as conference servers or message servers
that support message distribution lists (so the function is to guard against people being added to
these lists without their consent). Therefore the only function required in the core is to pass the
messages and headers through transparently. Clearwater already supports this minimal set of
function.
Allows a SIP UA to establish a multi-party conference by specifying a resource list in the body
of the message used to set up the conference.
Mandatory for IMS conference app servers.
Transparent to proxies, so supported by Clearwater.
Allows a SIP UA to send a REFER message containing a resource list URI. One use case for
this could be to send a single REFER to a conference server to get it to invite a group of people to
a conference.
Optional according to TS 24.229, and only applicable to UEs and any application servers that
can receive REFER requests.
Transparent to proxies, so supported by Clearwater.
Only applicable on the ISC interface - used to clear up some ambiguities about exactly which
user the AS should be providing service for.
Optional according to TS 24.229.
This header is supported by Clearwater and included on requests sent to application servers.
Defines mechanisms for clients behind NATs to connect to a SIP network so SIP requests can
be routed to the client through the NAT.
Mandatory according to TS 24.229.
Supported by Clearwater for NAT traversal, except for the Flow-Timer header (which tells the
client how often to send keepalives).
Fixes a minor problem in the ABNF definition in RFC 3261 relating to IPv6 addresses, and
clarifies URI comparison rules when comparing IPv6 addresses (in what looks like an obvious
way).
Mandatory according to TS 24.229.
Supported by Clearwater.
Defines family of URNs to be used in Alert-Info header to provide better control over how user
is alerted on a UE.
Optional according to TS 24.229.
Transparent to proxies, so supported by Clearwater.
Defines the use of the SIP MESSAGE method to implement an instant messaging service.
Mandatory in proxy components according to TS 24.229.
Supported in Clearwater.
Defines an event package supported by SIP registrars to notify other devices of registrations.
Must be supported by IMS core for the ISC interface, and also needed by some UEs.
Supported in Clearwater since sprint 40 “Yojimbo”
Defines a mechanism for ensuring the reliability of provisional responses when using an
unreliable transport. Covers the PRACK method and the Rseq and Rack headers.
Optional according to TS 24.229.
Supported in Clearwater.
Defines changes to RFC 3261 procedures for handling non-INVITE transactions to avoid some
issues - in particular the potential for an O(N^2) storm of 408 responses if a transaction times out.
Mandatory for all SIP nodes according to TS 24.229.
Supported in Clearwater.
User agent capabilities encoded as feature tags in Contact headers during registration (RFC
3840) and Accept-Contact, Reject-Contact and Request-Disposition headers encode filtering rules
to decide which targets subsequent request should be routed/forked to (RFC 3841).
Used for routing of requests to targets with the appropriate features/capabilities in IMS.
Mandatory for proxy components.
Clearwater’s Sprout registrar has full support for storing, matching, filtering and prioritizing
bindings based on advertised capabilities and requirements as per these specifications.
Used solely between I-CSCF and S-CSCF to signal the public service identity key to be used
when a requested public service identity matches a wildcard entry in the HSS. Purely an
optimization to avoid having to do wildcard matching twice for a single request.
Optional according to TS 24.229
Supported in Clearwater.
RFC 5627 defines mechanisms to assign and propagate a Globally-Routable User Agent URI
for each client that registers with the SIP network. A GRUU identifies a specific user agent rather
than a SIP user, and is routable from anywhere in the internet. GRUUs are intended to be used in
scenarios like call transfer where URIs are required for individual user agents to ensure the
service operates correctly. Standard Contact headers would seem to do the job in many cases but
don’t satisfy the globally routable requirement in all cases, for example where the client is behind
certain types of NAT.
Assignment and use of GRUUs is mandatory for S-CSCF and UEs in an IMS network. RFC
4122,draft-montemurro-gsma-imei-urn-11 and draft-atarius-dispatch-id-meid-urn-10 are
referenced from the sections of TS 24.229 that discuss exactly how GRUUs should be
constructed.
Clearwater supports assigning and routing on public GRUUs as of the Ninja Gaiden release. It
does not support temporary GRUUs.
The Blink softphone client can be used to test this, as it provides the +sip.instance parameter
needed for GRUU support.
Defines additional parameters in Tel URI for signaling related to number portability.
Used in IMS in both Tel and SIP URIs for carrier subscription scenarios, and in IMS core for
other number portability related scenarios.
Optional according to TS 24.229.
The rn and npdi parameters are supported by Clearwater; Clearwater doesn’t currently
support the other parameters defined in this RFC.
These are the RFCs which are relevant to Clearwater and not yet supported.
Defines a user=dialstring parameter used in SIP URIs to indicate that the user portion of
the URI is a dial string (as opposed to a number that definitely identifies a phone as in
the user=phone case).
IMS allows this encoding from UEs initiating calls, but doesn’t specify any particular processing
within the core of the network. The intention is that this can be handled by an application server,
or captured by filter criteria.
Clearwater doesn’t currently support this.
adding P-Early-Media header with supported value on requests from clients (or
modifying header from clients if already in message)
passing the header through transparently on responses.
o If P-CSCF is gating media then function is more complex as P-CSCF has to operate on
values in P-Early-Media headers sent to/from UEs.
o Mandatory in a P-CSCF according to TS 24.229.
o Clearwater doesn’t currently support this.
According to TS 24.229, only required if P-CSCF supporting IMS AKA authentication with
IPsec ESP encryption, or SIP digest authentication with TLS encryption.
Not supported, as this is P-CSCF only (and Bono doesn’t support AKA).
Already supported in Clearwater for responses, would need to add support for passing on
CANCEL requests (but pretty easy).
Optional according to TS 24.229.
Covers CPIM message format used between UEs and AS implementing SMS-GW function
(RFC 3862) and Message Disposition Notifications sent from the SMS-GW to the UE (RFC 5438).
Transported as body in MESSAGE method across IMS core, so transparent to proxy
components. Therefore should be supported by Clearwater once we have tested support for
MESSAGE methods.
Defines how SIP can be transported using SCTP (instead of UDP or TCP).
IMS allows SCTP transport within the core of the network, but not between P-CSCF and UEs.
Clearwater does not support SCTP transport (nor does PJSIP). Strictly speaking this is
relevant to Clearwater, but it’s not clear whether anyone would use it.
Defines use of the SIP Reason header in BYE messages to signal when a session is being
terminated because of a network pre-emption event, for example, if the resources originally
acquired for the call were need for a higher priority session.
Optional according to TS 24.229.
Not currently supported by Clearwater.
Defines a URN namespace to identify services. IMS allows UEs to use such service URNs as
target URIs when establishing a call. In particular, it is mandatory for UEs to signal emergency
calls using a service URN of the form urn:service:sos possibly with a subtype, and the P-CSCF
must be able to handle these requests appropriately, routing to an E-CSCF.
Clearwater currently has no support for service URNs.
Allows a SIP node to subscribe to events on multiple resources with a single SUBSCRIBE
message by specifying a resource list in the body of the message.
Optional for any IMS node that can be the target of a SUBSCRIBE request.
Not currently supported by Clearwater.
Intended to plug an amplification vulnerability in SIP forking. Any forking proxy must limit the
breadth of forking to breadth specified in this header.
According to TS 24.229 is mandatory on any node that supports forking.
Not currently supported by Clearwater.
Defines a media feature tag to be used with the mechanisms in RFC 3840 and RFC 3841 to
direct requests to UAs that support a specific MIME application subtype media stream.
According to TS 24.229 support for this feature tag is mandatory on S-CSCFs.
Not currently supported, but support may drop out of implementing RFC 3840/RFC
3841(depending on the what match criteria the tag requires).
A fix to basic SIP transaction model to avoid INVITE retransmissions being incorrectly
identified as a new transaction and to plug a security hole around the forwarding of uncorrelated
responses through proxies. The change basically adds a new state to the transaction state
machine when previously the transaction would have been considered terminated and therefore
deleted.
This fix is mandatory according to TS 24.229.
Not supported by Clearwater, and will probably require PJSIP changes.
P-Asserted-Service and P-Preferred-Service headers (RFC 6050)
Defines a mechanism to allow a UE to signal the service it would like (although this is not
binding on the network) and other components to signal between themselves the service being
provided. The UE may optionally include a P-Preferred-Service header on any request specifying
the service it wishes to use. The S-CSCF is responsible for checking that the service requested in
P-Preferred-Service is (a) supported for the subscriber and (b) consistent with the actual request.
If the request is allowed, the S-CSCF replaces the P-Preferred-Service with a P-Asserted-Service
header. If either check fails, the S-CSCF may reject the request or it may allow it but ignore the P-
Preferred-Service header. If the UE does not specify a P-Preferred-Service header (or the
specified one was not valid) the S-CSCF should work out the requested service by analysing the
request parameters, and add a P-Asserted-Service header encoding the result.
In IMS networks, header should contain an IMS Communication Service Identifier (ICSI) -
defined values are documented at http://www.3gpp.com/Uniform-Resource-Name-URN-list.html -
examples include MMTEL (3gpp-service.ims.icsi.mmtel), IPTV (3gpp-service.ims.icsi.iptv),
Remote Access (3gpp-service.ims.icsi.ra), and Converged IP Messaging (3gpp-
service.ims.icsi.oma.cpm.* depending on exact service being requested/provided).
Mandatory function according to TS 24.229.
Not currently supported by Clearwater.
Framework for exchanging application specification information within a SIP dialog context.
Not currently supported by Clearwater.
Optional according to TS 24.229.
Adds a parameter to Via headers to allow nodes to agree the type of keepalives to be used to
keep NAT pinholes open.
Mandatory for UEs and P-CSCFs, optional elsewhere.
Not currently supported by Clearwater and would require PJSIP changes.
Defines a new status code to indicate the termination of an early dialog (ie. a dialog created by
a provisional response) prior to sending a final response.
According to TS 24.229 this parameter is mandatory for all UA components than can send or
receive INVITEs, and mandatory for S-CSCF because it has implications on forking proxies.
This is not currently supported by Clearwater.
Defines an end-to-end globally unique session identifier that is preserved even for sessions
that traverse B2BUAs).
Optional according to TS 24.229.
Not currently supported by Clearwater.
SDP/Media RFCs
The following is a brief explanation of each RFC, and its relevance to IMS.
These RFCs describe a mechanism for locating a SIP proxy server using DHCP. (RFC
3319defines the mechanism for IPv6/DHCPv6, and RFC 3361 is the IPv4 equivalent - not sure
why they happened that way round!).
The IMS specifications allows this as one option for a UE to locate a P-CSCF, although there
are other options such as manual configuration of a domain name or obtaining it from some
access-network specific mechanism.
This is irrelevant to Clearwater - there would be no point in Clearwater providing a DHCP
server with this function as there will be existing mechanisms used by clients to obtain their own
IP addresses. A service provider might enhance their own DHCP servers to support this function if
required.
Only relevance to IMS is that it defines a billing correlation parameter (bcid) which is passed in
the P-Charging-Vector header from DOCSIS access networks.
Frameworks for passing geo-location information within SIP messages - RFC 4119 encodes
geo-location in a message body, RFC 6442 encodes a URI reference where the UEs location can
be found.
According to TS 24.229 only required on an E-CSCF.
Used when an IMS core has multiple HSSs and an SLF - allows I-CSCF to signal to S-CSCF
which HSS to use to avoid multiple SLF look-ups.
Optional according to TS 24.229.
Not applicable to Clearwater given its stateless architecture.
URIs for Voicemail and IVR applications (RFC 4458)
Defines conventions for service URIs for redirection services such as voicemail and IVR.
Optional according to TS 24.229.
Referenced to define some terminology used in IMS architecture for handling emergency calls.
Defines a mechanism for a caller to control the answer mode at the target of the call. Use
cases can include invoking some kind of auto-answer loopback. Covers the Answer-Mode and
Priv-Answer-Mode headers.
In general is transparent to proxies (provided proxies pass headers through), but the RFC
recommends the mechanism is not used in environments that support parallel forking.
Optional according to TS 24.229 - and arguably not a good idea because of bad interactions
with forking.
Next Previous