IMS

 

 

 

 

RCS does not have any special registration process. It is just a additional service running on top of IMS. But usually RCS enabled UE go through some of additional steps during IMS registration. What are those additional steps ? The answer may vary a little depending on UE implementation and Carriers requirement. The most common additional steps for RCS during IMS Registration is SUBCRIBE/NOTIFY and PUBLISCH. You may already be familiar with SUBCRIBE/NOTIFY. You might have seen SUBSCRIBE with Event 'reg'. But this is with different Event called 'presence'.

One common example SIP message sequence with IMS enabled phone is as follows. In reality, during SUBCRIBE/NOTIFY and PUBLISH process, some XCAP procedure is performed. So, the complete transaction would be more complicated than this example, but I just put down SIP transaction part to give you overall process. (If you are interested in the full transactions including XCAP process, refere to RCS Initial Subscribe/Notify page.)

 

Step

Direction

Protocol

Message

1

UA1 --> NW

SIP

REGISTER sip:test-rcs.com

2

UA1 <-- NW

SIP

200 OK

3

UA1 --> NW

SIP

SUBSCRIBE sip:+339012341234@test-rcs.com;pres-list=rcs

4

UA1 <-- NW

SIP

200 OK

5

UA1 --> NW

SIP/XML

PUBLISH sip:+339012341234@test-rcs.com

6

UA1 <-- NW

SIP

200 OK

7

UA1 <-- NW

SIP

NOTIFY sip:192.168.1.1:5060;transport=udp

8

UA1 --> NW

SIP

200 OK

 

Overall logic of this sequence is like this.

 

Step 1 and 2 is IMS Registration without Authentication. Very simple. I intentionally tried without Authentication to make IMS registration procedure simple because it is not the main focus of the topic in this post.

Step 3 is SUBSCRIBE for presense. With this message, UE tells IMS server "Are you providing Presence service ?" (See the details of message contents).

Step 7 is the response to Step 3. Depending on the situation, you may see this response earlier than in this example. For example, this reponse would come right after Step 3. In this step, IMS Server say "Yes, I am providing Presence service".

Step 5 is the message in which UE informs RCS server about its RCS capability. Basically in this message UE is saying "Hey.. I can do this, this, that, that ...". See the details of message contents and see how UE carry these information in the message.

 

 

1) REGISTER sip:test-rcs.com

 

REGISTER sip:test-rcs.com SIP/2.0

Call-ID: 3Ag0yaUAAA@192.168.1.1

CSeq: 1 REGISTER

From: <sip:+339012341234@test-rcs.com>;tag=PBg0yaUCAA

To: <sip:+339012341234@test-rcs.com>

Via: SIP/2.0/UDP 192.168.1.1:5060;keep;branch=z9hG4bKbf994bf8ba37e52882a1ac4ba748f008383138;rport

Max-Forwards: 70

Contact: <sip:192.168.1.1:5060;transport=UDP>;+sip.instance="<urn:gsma:imei:356432059050620>";

             +g.oma.sip-im;

             +g.3gpp.cs-voice;

             +g.gsma.rcs.ipcall;

             +g.3gpp.icsi-ref="urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel";video;automata;

             +g.3gpp.iari-ref="urn%3Aurn-7%3A3gpp-application.ims.iari.gsma-is,

                                    urn%3Aurn-7%3A3gpp-application.ims.iari.rcs.fthttp"

Supported: path, gruu

Allow: INVITE,UPDATE,ACK,CANCEL,BYE,NOTIFY,OPTIONS,MESSAGE,REFER

Route: <sip:192.168.1.2:5060;transport=udp;lr>

Expires: 600000

User-Agent: IM-client/OMA1.0 Test-RCS-client/2.5.13

Authorization: Digest username="X",uri="sip:test-rcs.com",algorithm=MD5,realm="X",nonce="",response=""

Content-Length: 0

 

 

3) SUBSCRIBE sip:+339012341234@test-rcs.com;pres-list=rcs

 

SUBSCRIBE sip:+339012341234@test-rcs.com;pres-list=rcs SIP/2.0

Call-ID: 8Ih0yaUFAA@192.168.1.1

CSeq: 1 SUBSCRIBE

From: "test user" <sip:+339012341234@test-rcs.com>;tag=8Ih0yaUGAA

To: <sip:+339012341234@test-rcs.com;pres-list=rcs>

Via: SIP/2.0/UDP 192.168.1.1:5060;branch=z9hG4bKcad78c485b12e9ff2a8410e4d375722f383138;rport

Max-Forwards: 70

Route: <sip:192.168.1.2:5060;transport=udp;lr>

Expires: 3600

User-Agent: IM-client/OMA1.0 Test-RCS-client/2.5.13

Contact: <sip:192.168.1.1:5060;transport=UDP>;+sip.instance="<urn:gsma:imei:356432059050620>"

Allow: INVITE,UPDATE,ACK,CANCEL,BYE,NOTIFY,OPTIONS,MESSAGE,REFER

Event: presence

Supported: eventlist

Content-Length: 0

 

 

5) PUBLISH sip:+339012341234@test-rcs.com

 

PUBLISH sip:+339012341234@test-rcs.com SIP/2.0

Call-ID: xSh0yaUHAA@192.168.1.1

CSeq: 1 PUBLISH

From: <sip:+339012341234@test-rcs.com>;tag=xSh0yaUIAA

To: <sip:+339012341234@test-rcs.com>

Via: SIP/2.0/UDP 192.168.1.1:5060;branch=z9hG4bK84da5f074a2ba56ea1c0d63f7fa45a54383138;rport

Max-Forwards: 70

Route: <sip:192.168.1.2:5060;transport=udp;lr>

Expires: 3600

SIP-If-Match: ac63be7e9042439dad76da16904cf48d

User-Agent: IM-client/OMA1.0 Test-RCS-client/2.5.13

Event: presence

Content-Type: application/pidf+xml

Content-Length: 2122

 

<presence xmlns="urn:ietf:params:xml:ns:pidf" xmlns:op="urn:oma:xml:prs:pidf:oma-pres" xmlns:opd="urn:oma:xml:pde:pidf:ext" xmlns:pdm="urn:ietf:params:xml:ns:pidf:data-model" xmlns:ci="urn:ietf:params:xml:ns:pidf:cipid" xmlns:rpid="urn:ietf:params:xml:ns:pidf:rpid" xmlns:gp="urn:ietf:params:xml:ns:pidf:geopriv10" xmlns:gml="urn:opengis:specification:gml:schema-xsd:feature:v3.0" entity="sip:+339012341234@test-rcs.com">

<tuple id="t1">

  <status><basic>open</basic></status>

  <op:service-description>

    <op:service-id>org.openmobilealliance:File-Transfer</op:service-id>

    <op:version>1.0</op:version>

  </op:service-description>

  <contact>sip:+339012341234@test-rcs.com</contact>

  <timestamp>2014-06-19T06:30:45.000Z</timestamp>

</tuple>

<tuple id="t2">

  <status><basic>open</basic></status>

  <op:service-description>

    <op:service-id>org.gsma.imageshare</op:service-id>

    <op:version>1.0</op:version>

  </op:service-description>

  <contact>sip:+339012341234@test-rcs.com</contact>

  <timestamp>2014-06-19T06:30:45.000Z</timestamp>

</tuple>

<tuple id="t3">

  <status><basic>open</basic></status>

  <op:service-description>

    <op:service-id>org.gsma.videoshare</op:service-id>

    <op:version>1.0</op:version>

  </op:service-description>

  <contact>sip:+339012341234@test-rcs.com</contact>

  <timestamp>2014-06-19T06:30:45.000Z</timestamp>

</tuple>

<tuple id="t4">

  <status><basic>open</basic></status>

  <op:service-description>

    <op:service-id>org.openmobilealliance:IM-session</op:service-id>

    <op:version>1.0</op:version>

  </op:service-description>

  <contact>sip:+339012341234@test-rcs.com</contact>

  <timestamp>2014-06-19T06:30:45.000Z</timestamp>

</tuple>

<tuple id="t5">

  <status><basic>open</basic></status>

  <op:service-description>

    <op:service-id>org.3gpp.cs-videotelephony</op:service-id>

    <op:version>1.0</op:version>

  </op:service-description>

  <contact>sip:+339012341234@test-rcs.com</contact>

  <timestamp>2014-06-19T06:30:45.000Z</timestamp>

</tuple>

</presence>

 

 

7)  NOTIFY sip:192.168.1.1:5060;transport=udp

 

NOTIFY sip:192.168.1.1:5060;transport=udp SIP/2.0

Via: SIP/2.0/UDP 192.168.1.2:51417;branch=z9hG4bKb7a8715cd9d04e019149483fac110bee93;rport;transport=udp

Via: SIP/2.0/TCP 192.168.1.2:6061;branch=z9hG4bK299ad82d0390455982d5f305d9d68a43;rport=49793

Max-Forwards: 69

From: <sip:presence@test-rcs.com>;tag=9ab957cb0149442b9e4a6d99d93f3d21

To: <sip:+339012341234@test-rcs.com>;tag=8Ih0yaUGAA

Event: presence

Contact: <sip:presence@test-rcs.com>

Content-Type: application/pidf+xml

Subscription-State: active

Content-Length: 0

CSeq: 1 NOTIFY

Call-ID: 8Ih0yaUFAA@192.168.1.1

Record-Route: <sip:192.168.1.2;lr>