SIP - Mobility


Personal mobility is the ability to have a constant identifier across a number of devices. SIP supports basic personal mobility using the REGISTER method, which allows a mobile device to change its IP address and point of connection to the Internet and still be able to receive incoming calls.

SIP can also support service mobility – the ability of a user to keep the same services when mobile

SIP Mobility During Handover(Pre-call)

A device binds its Contact URI with the address of record by a simple sip registration. According to the device IP address, registration authorizes this information automatically update in sip network.

During handover, the User agent routes between different operators, where it has to register again with a Contact as an AOR with another service provider.

For example, let’s take the example of the following call flow. UA which has temporarily received a new SIP URI with a new service provider. The UA then performs a double registration −

  • The first registration is with the new service operator, which binds the Contact URI of the device with the new service provider’s AOR URI.

  • The second REGISTER request is routed back to the original service provider and provides the new service provider’s AOR as the Contact URI.

As shown later in the call flow, when a request comes in to the original service provider’s network, the INVITE is redirected to the new service provider who then routes the call to the user.

SIP Mobility

For the first registration, the message containing the device URI would be −

Via: SIP/2.0/UDP;branch = z9hG4bK97a7ea349ce0fca 
Max-Forwards: 70 
To: Tom <> 
From: Tom <>;tag = 72d65a24 
Call-ID: 4e719d1c1fc9000803630373300@ 
Contact: <sip:Tom@> 
Expires: 600000 
Content-Length: 0

The second registration message with the roaming URI would be −

Via: SIP/2.0/UDP;branch = z9hG4bKah4vn2u 
Max-Forwards: 70 
To: Tom <> 
From: Tom <>;tag = 45375 
CSeq: 6421 REGISTER 
Contact: <> 
Content-Length: 0

The first INVITE that is represents in the above figure would be sent to; the second INVITE would be sent to sip:, which would be forwarded to sip:Tom@ It reaches Tom and allows the session to be established. Periodically both registrations would need to be refreshed.

Mobility During a Call(re-Invite)

User Agent may change its IP address during the session as it swaps from one network to another. Basic SIP supports this scenario, as a re-INVITE in a dialog can be used to update the Contact URI and change the media information in the SDP.

Take a look at the call flow mentioned in the figure below.

  • Here, Tom detects a new network,

  • Uses DHCP to acquire a new IP address, and

  • Performs a re-INVITE to allow the signalling and media flow to the new IP address.

If the UA can receive media from both networks, the interruption is negligible. If this is not the case, a few media packets may be lost, resulting in a slight interruption to the call.

Mobility During Call

The re-INVITE would appear as follows −

Via: SIP/2.0/UDP;branch = z9hG4bK918f5a84fe6bf7a 
Max-Forwards: 70 

To: <> 

From:;tag = 70133df4 
Call-ID: 76d4861c19c 
Accept: application/sdp 
Accept-Language: en 

Contact: <sip:>; 
Content-Type: application/sdp 
Content-Length: 168 

v = 0
o = PPT 40467 40468 IN IP4 
s = - 
c = IN IP4 
b = AS:49 
t = 0 0 
b = RR:0 
b = RS:0 
a = rtpmap:97 AMR/8000/1 
m = audio 6000 RTP/AVP 96 
a = fmtp:102 0-15 
a = ptime:20 
a = maxptime:240

The re-INVITE contains Bowditch’s new IP address in the Via and Contact header fields and SDP media information.

Mobility in Midcall(With replace Header)

In midcall mobility, the actual route set (set of SIP proxies that the SIP messages must traverse) must change. We cannot use a re-INVITE in midcall mobility

For example, if a proxy is necessary for NAT traversal, then Contact URI must be changed — a new dialog must be created. Hence, it has to send a new INVITE with a Replaces header, which identifies the existing session.

Note − Suppose A & B both are in a call and if A gets another INVITE (let’s say from C) with a replace header (should match existing dialog), then A must accept the INVITE and terminate the session with B and transfer all resource to newly formed dialog.

The call flow is shown in the following Figure. It is similar to the previous call flow using re-INVITE except that a BYE is automatically generated to terminate the existing dialog when the INVITE with the Replaces is accepted.

Mobility In Midcall

Given below are the points to note in this scenario −

  • The existing dialog between Tom and Jerry includes the old visited proxy server.

  • The new dialog using the new wireless network requires the inclusion of the new visited proxy server.

  • As a result, an INVITE with Replaces is sent by Tom, which creates a new dialog that includes the new visited proxy server but not the old visited proxy server.

  • When Jerry accepts the INVITE, a BYE is automatically sent to terminate the old dialog that routes through the old visited proxy server that is now no longer involved in the session.

  • The resulting media session is established using Tom’s new IP address from the SDP in the INVITE.

Service Mobility

Services in SIP can be provided in either proxies or in UAs. Providing service mobility along with personal mobility can be challenging unless the user’s devices are identically configured with the same services.

SIP can easily support service mobility over the Internet. When connected to Internet, a UA configured to use a set of proxies in India can still use those proxies when roaming in Europe. It does not have any impact on the quality of the media session as the media always flows directly between the two UAs and does not traverse the SIP proxy servers.

Endpoint resident services are available only when the endpoint is connected to the Internet. A terminating service such as a call forwarding service implemented in an endpoint will fail if the endpoint has temporarily lost its Internet connection. Hence some services are implemented in the network using SIP proxy servers.