IMS

 

 

 

 

Registration

 

IMS Registration is the most important steps of all IMS process (except Emergency Call). The first step to learn IMS should be to understand every details related to IMS registration. In this page, I would describe the IMS Registration not only in terms of protocol sequence but also in terms of data flow in network architecture. This page would focus on overall data path and protocol sequence for IMS Registration, but would not look into the very details of each message. If you are intersted in the details of each message, refer to Message Example : REGISTER page. (If you are interested in other messages for various IMS/SIP protocol, refer to Message Example page)

 

TIPS : If you are working on UE verification / testing job, you SHOULD know all the details of two important SIP message which is REGISTER and INVITE. A lot of IMS testing issue comes just from the parameter mismatch between UE configuration and equipment setting. So it is VERY, VERY, VERY important to have all the informations about UE configuration or capabilities that are required to set the test equipment setting. At first, I wrote a long Check List and ask the customer to provide those information. This list is from my personal experience of many years of IMS testing and seems I could find the solution for most of the problem if I have the correct information for each items in the list. But almost nobody provided me with these informations.. I don't even know if they even read through the list :). So next thing I have been trying is to say 'Just capture SIP REGISTER message from Wireshark and send it to me please. No problem if call fails right after the REGISTER. I just need REGISTER message'. From this message, I can find out most of the information that I need for equipment setting at least for the IMS Registration step. (If UE does not even try REGISTER, then you need to go to CheckList page. There is no other short-cut solution for this case).  And then, if REGISTER process can be complete, I would say 'Just try to make a call capture SIP INVITE message from Wireshark and send it to me please. No problem if call fails right after the INVITE. I just need INVITE message'. From this message, I can find out most of the information that I need for equipment setting for the VoLTE setup procedure.

 

Followings are the topics that will be described in this page.

 

 

IMS Registration - Signal Flow in Network Architecture

 

Following illustration is based on the IMS registration sequence posted on EventHelix. I converted the sequence diagram into IMS architecture diagram so that you can get some better idea of interplay of each components.

Try to follow the big picture and understand overall logic. The very detailed sequence and parameters may vary depending on the network organization. So the log you collected from a specific network may be different from what you see here. If you have a log from a test equipment, it may be simpler than what you see here.

 

In Full IMS registration, it can be split into three major process as shown below.

  • Unauthenticated IMS Registration Attempt
  • IPSec Security Association Establishment
  • Authenticated IMS Registration

 

 

 

< Simplified Registration Procedure >

 

Even though the long procedure shown above is what's going on in live network, it would be a little bit overwhelming for many people (including me :). Also it would be very difficult for you to get the trace log showing all of these steps combined. In most case, you would relatively easily get the logs between UE and eNB (or Test Equipment).

 

Following is a kind of Simplified protocol sequence for Authenticated IMS Registration. You would see this kind of simplified process when you are testing IMS device with test equipment. (But basic idea is same as in real network). For the detailed contents of each steps and SIP messages, refer to Basic Procedure : Authenticated Registration

 

 

 

< Unauthenticated IMS Registration Attempt >

 

Following is the first main procedure - Unauthenticated IMS Registration Attempt.

 

 

(1) : REGISTER  (Path : UA1 --> eNodeB --> S-GW --> P-GW --> P-CSCF)

 

SIP REGISTER message go through all the LTE radio access network and arrives at P-CSCF first (All the IMS/SIP message goes through P-CSCF). There can be wide differences in terms of the detailed parameters, but typical format of SIP REGISTER message would like as follows.

    REGISTER sip:hims.net SIP/2.0,

    Via: SIP/2.0/UDP UE-IP;branch=0abab,

    Route: sip:[P-CSCF-IP], // Route specifies the IP of next node for this REGISTER to reach. In this case,

                                     //'Next Node' is P-CSCF

    Max-Forwards: 20,

    From: <sip:name@hims.net>;tag=abbb,

    To: <sip:name@hims.net>,

    Contact: <sip:[UE-IP]>;expires=90000,

    Call-ID: ababab,

    CSeq: 25 REGISTER,

    Security-Client: port-s, port-c,

    Authorization: Digest username = name.private@hims.net,

    Content-Length: 0

 

Note : Since this step is 'REGISTER' process, 'Authentication' parameter does not carry any specific information for Authentication algorithm. Following is one example that I captured from test equipment.

    Authorization: Digest uri="sip:test.3gpp.com",

          username="001010123456789@test.3gpp.com",

          response="",

          realm="test.3gpp.com",

          nonce=""

 

 

(2): DNS Query (Path : P-CSCF --> DNS Server)

 

Once P-CSCF get the SIP REGISTER, it has to find I-CSCF to pass the message to. To find the I-CSCF, P-CSCF to perform DNS query process (there can be other mechanism to find I-CSCF).

At first, P-CSCF send DNS Query to DNS server requesting IP address of I-CSCF.

    DNS Query for I-CSCF IP

 

(3): DNS Response (Path : DNS Server --> P-CSCF)

 

DNS server send response to P-CSCF with I-CSCF IP address.

    DNS Response for I-CSCF IP

 

(4) : REGISTER (Path : P-CSCF --> I-CSCF)

 

Now P-CSCF forward the SIP REGISTER to I-CSCF.

    REGISTER sip:hims.net SIP/2.0,

    Via: SIP/2.0/UDP pcscf1.vims.net;branch=0aab1,

    Via: SIP/2.0/UDP UE-IP;branch=0abab,

    Max-Forwards: 19,

    From: <sip:name@hims.net>;tag=abbb,

    To: <sip:name@hims.net>,

    Contact: <sip:[UE-IP]>;expires=90000,

    Call-ID: ababab,

    CSeq: 25 REGISTER,

    Content-Length: 0,

    Authorization: Digest username = name.private@hims.net integrity protection:no

 

 

(5) : User Authorization Request (Path : I-CSCF --> HSS)

 

Once I-CSCF got the SIP REGISTER message, it talks talks to HSS to get the detailed subscriber information for the UA.

And with UAR (Diameter User Authentication Request), HSS retrieves authentication information and S-CSCF information. (This is very simplified description, in reality this process would be much more complicated).

 

(6) : User Authorization Answer (Path : HSS --> I-CSCF)

 

With  UAA(Diameter User Authentication Answer), HSS send Authorized Answer and S-CSCF information to I-CSCF.

    S-CSCF Name,

    S-CSCF Capabilities

 

(7) : REGISTER (Path : I-CSCF --> S-CSCF)

 

Now I-CSCF forward the REGISTER message to S-CSCF.

    REGISTER sip:hims.net SIP/2.0,

    Via: SIP/2.0/UDP icscf1.hims.net;branch=0aab2,

    Via: SIP/2.0/UDP pcscf1.vims.net;branch=0aab1,

    Via: SIP/2.0/UDP UE-IP;branch=0abab,

    Route: sip:scscf1.hims.net,Max-Forwards: 18,

    From: <sip:name@hims.net>;tag=abbb,

    To: <sip:name@hims.net>,

    Contact: <sip:[UE-IP]>;expires=90000,

    Call-ID: ababab,

    CSeq: 25 REGISTER,

    Content-Length: 0,

    Authorization: Digest username =name.private@hims.net integrity protection:no

 

(8) : Multimedia Authentication Request  (Path : S-CSCF --> HSS)

 

S-CSCF send MAR (Multimedia Authentication Request) to HSS.

 

 

(9) : Multimedia Authentication Response  (Path : HSS --> S-CSCF)

 

HSS sends MAA (Multimedia Authentication Answer) to S-CSCF with the following information.

    S-CSCF does followings at this point

    • Select Authentication vectors
    • Save the selected authentication vector

 

 

(10) : 401 UnAuthorized (Path : S-CSCF --> I-CSCF)

 

S-CSCF forward the Authentication information to I-CSCF. Followings are some of the important paramters.

    WWW-Authenticate: nonce=RAND-AUTN, ck, ik,

    Via: icscf1, pcscf1, ue-ip

 

Note : This message will tell UE to initiate 'REGISTER' with authentication based on the information under 'WWW-Authenticate'. An example is as follows.

    WWW-Authenticate: Digest realm="test.3gpp.com",

        nonce="qlWqVapVqlWqVapVqlWqVUUQA5HEt9VVZ3t1TM221cg=",

        qop="auth",

        opaque="MTcyMjU3ODA2NDo=SU1TLVNJUCBTZXJ2ZXI=",

        algorithm=AKAv1-MD5

 

 

(11) : 401 UnAuthorized (Path : I-CSCF --> P-CSCF)

 

I-CSCF forward the Authentication information to P-CSCF. Followings are some of the important paramters.

    WWW-Authenticate: nonce=RAND-AUTN, ck, ik,

    Via: pcscf1, ue-ip

     

    P-CSCF does followings at this point

    • Save CK and IK
    • allocate P-CSCF side client and server ports

 

(12) : 401 UnAuthorized (Path : P-CSCF --> P-GW --> S-GW --> eNodeB --> UA1)

 

P-CSCF forward the Authentication information to UE through LTE Access network. Followings are some of the important paramters.

    WWW-Authenticate: nonce=RAND-AUTN,

    Security-Server: port-s, port-c

 

< IPSec Security Association Establishment >

 

 

 

 

 

(1) : IPSec SA for UE Initiated Requests

    UE-Client -> P-CSCF-Server

 

(2) : IPSec SA for Responses to UE

    UE-Server <- P-CSCF-Client

 

(3) : IPSec SA for P-CSCF Initiated Requests

    UE-Server <- P-CSCF-Client

 

(4) : IPSec SA for Responses to P-CSCF

    UE-Client -> P-CSCF-Server

 

 

< Authenticated IMS Registration >

 

 

(1) REGISTER (Path : UA1 --> eNodeB --> S-GW --> P-GW --> P-CSCF)

    Via: UE-IP;UE-Server-Port,

    Route: pcscf1, pcscf-server-port,

    Contact: UE-IP ue-server-port,

    Authorization: Digest username = name.private@hims.net response=RES

Note : Since this step is for Registration with Authentication, 'Authentication' parameter carries detailed information needed for the authentication algorith as shown below. This step is triggered by '401 UnAuthorized' in previous registration step.

    Authorization: Digest username="001010123456789@test.3gpp.com",

          realm="test.3gpp.com",

          uri="sip:test.3gpp.com",

          qop=auth,

          nonce="qlWqVapVqlWqVapVqlWqVUUQA5HEt9VVZ3t1TM221cg=",

          nc=00000001,

          cnonce="11259375",

          algorithm=AKAv1-MD5,

          response="a3f549b13f477562f4445b7277cd83c1",

          opaque="MTcyMjU3ODA2NDo=SU1TLVNJUCBTZXJ2ZXI="

 

 

(2) REGISTER (Path : P-CSCF --> I-CSCF)

    Via: pcscf1 UE-IP;UE-Server-Port,

    Contact: UE-IP ue-server-port,

    Authorization: Digest username = name.private@hims.net response=RES integrity protection: yes,RES

 

(3) User Authorization Request (Path : I-CSCF --> HSS)

    name.private@hims.net

 

(4) User Authorization Response (Path : HSS --> I-CSCF)

    S-CSCF Name,

    S-CSCF Capabilities

 

(5) REGISTER (Path : I-CSCF --> S-CSCF)

    Via: icscf1 pcscf1 UE-IP;UE-Server-Port,

    Contact: UE-IP ue-server-port,

    Authorization: Digest username =name.private@hims.net response=RES integrityprotection: yes,RES

 

(6) Server Assignment Request (Path : S-CSCF --> HSS)

    name.private@hims.net

 

(7) Server Assignment Request (Path : HSS --> S-CSCF)

 

(8) 200 OK (Path : S-CSCF --> I-CSCF)

 

(9) 200 OK (Path : I-CSCF --> P-CSCF)

 

(10) 200 OK (Path : P-CSCF --> P-GW --> S-GW --> eNodeB --> UA1)

 

 

Protocol Sequence of REGISTER

 

There are roughly three types of REGISTER process (This is not the official classification. This is just my personal classification). At the initial stage of IMS stack implementation, most of the device supported only Type 1 and then evolved to Type 2 and Type 3. For now (as of Mar 2017), I see most of the UE support all of these types, but it is highly likely that only Type 3 is allowed in live network.

 

REGISTER message in various form

 

As there is different types of REGISTER procedure, there are many different variations of REGISTER message itself. The detailed contents of REGISTER message varies depending on UE capability, type of services that the UE subscribed and Authentication types etc. I would suggest you to get familiar with various REGISTER message and understand the meaning of each and every parameters in the message.

 

 

SIP UnRegistration

 

There is no specific message for UnRegistration. SIP uses 'REGISTER' message for Unregistration as well. Just setting 'Expires' field to be 0 perform SIP Unregistration.

 

REGISTER sip:test.3gpp.com SIP/2.0

f: <sip:+11234567890@test.3gpp.com>;tag=589636628

t: <sip:+11234567890@test.3gpp.com>

CSeq: 589636509 REGISTER

i: 589636508_2363003488@10.133.202.46

v: SIP/2.0/UDP 10.133.202.46:5060;branch=z9hG4bK428556305

Max-Forwards: 70

m: <sip:+11234567890@10.133.202.46:5060>

P-Access-Network-Info: 3GPP-E-UTRAN-FDD; utran-cell-id-3gpp=3114800001FFFFFFF

Expires: 0

l: 0

Authorization: Digest uri="sip:test.3gpp.com",username="001010123456789@test.3gpp.com",response="",realm="test.3gpp.com",nonce="",

Digest uri="sip:test.3gpp.com",username="001010123456789@test.3gpp.com",response="",

realm="test.3gpp.com",nonce=""

 

 

IMS Registration based on 3GPP Specification

 

The most of the contents posted in this page is more like generic IMS/SIP procedure mostly based on RFC specification. When IMS/SIP is used under mobile network (especially LTE), some additional details on UE behabiour or SIP message are prescribed by 3GPP in addtion to RFC.

 

Main 3GPP specification for IMS registration is 24.229 5.1.1.2 Initial Registration. Followings are some of details you have to pay attention in this specification are

  • Which URI format to be used in 'From', 'To' header field ?
  • What kind of UE id to be used ?
  • How to handle +sip.instance ?
  • Requirement for ICSI value (e.g, IMS Registration based on 3GPP Specification)
  • Requirement for Contact Field
  • Requirement for Via Field
  • Requirement for Expiration Interval
  • Reaction to Error Message
    • 305 Use Proxy
    • 408 Request Timeout
    • 423 Interval Too Brief
    • 500 Internal Server Error
    • 504 Server Timeout
    •