IMS - RCS

 

 

 

 

Auto Configuration

 

Auto Configuration is a mechanism by which UE retrieves its RCS configuration from a remote server and configure itself for RCS operation. RCS configuration is highly dependent on UE RCS stack implementation and Network Operators requirement. At early stages of RCS implementation, most of UE provide a special GUI by which you can configure RCS operation manually or they put a special configuration file on UE.  However, as RCS implementation gets mature and network operators start deplolying RCS in real network (or at least in lab network).

 

Overal protocol for this Auto configuration is very simple as shown below. UE communicates Auto Configuration server somewhere in core network in HTTP (Non-Secured protocol) and HTTPS (Secured Protocol). As you see here, it is just 4 step negotiation process. From this 4 step negotiation, the first two step is only to check whether the server is available or not. The real configuration process is done by only two steps(Step 3 and 4).  

 

 

Even though the negotiation is simple four step process, the real log you capture for this process would look pretty complicated as shown below.  Some of the complication is due to TCP negotiation for HTTP establish and tear-down. But the biggest reason for the complication is due to TLS/SSL setup process that is required for step (3)/(4) as you see in the following screen capture. If you are in a position to perform this kind of Auto configuration, it would be even more complicated because you have to configure all of the certification parameters both on network (or test equipment) and UE (DUT).

 

 

 

Actually from the message sequence show above, you would not be able to figure out which message are for Auto configuration or which messages are for just house keeping process. To figure out the details of the transaction, you need to decrype the SSL encoded message, but this would not be so simple unless you have all the security information related to the SSL process (Refer to Wireshark Protocol - SSL section if you want to know how to decode SSL encrypted message).

Once you decoded the SSL message, you can figure out which messages are for Auto Configuration process as shown below.

 

 

 

(1) HTTP GET Request

 

    GET / HTTP/1.1

    Cache-Control: max-age=0

    Host: config.rcs.mnc001.mcc001.pub.3gppnetwork.org

    User-Agent: 3gpp-gba

    Connection: Keep-Alive

    Accept-Language: en-US

 

 

(2) HTTP 200 OK  

 

    HTTP/1.1 200 OK

    Cache-Control: private

    Transfer-Encoding: chunked

    Content-Type: text/html

    Expires: Mon, 07 Nov 2016 04:05:20 GMT

    Server: Microsoft-IIS/7.5

    X-AspNet-Version: 4.0.30319

    Set-Cookie: PHPSESSID=dv+z7IckAiXiBX+aFEJh+g==; path=/

    X-Powered-By: ASP.NET

    Date: Mon, 07 Nov 2016 05:05:20 GMT

 

 

(3) HTTPS GET

 

    GET /?IMEI=353756074161860

         &terminal_vendor=testVendor

         &rcs_version=5.1B

         &terminal_model=SM-N920T

         &client_version=RCSAndr-5.0

         &IMSI=001001123456789

         &terminal_sw_version=N920TUVS2COKC

         &client_vendor=SEC

         &vers=20160401

         &rcs_profile=joyn_blackbird HTTP/1.1

    Cookie: PHPSESSID=dv+z7IckAiXiBX+aFEJh+g==; path=/

    Cache-Control: max-age=0

    Host: config.rcs.mnc001.mcc001.pub.3gppnetwork.org

    User-Agent: IM-client/OMA1.0 testVendor/SM-N920T-OKC testVendor-RCS/5.0 3gpp-gba

    Connection: Keep-Alive

    Accept-Language: en-US

 

 

(4) HTTPS 200 OK

 

    HTTP/1.1 200 OK

    Cache-Control: private

    Content-Type: text/xml; charset=utf-8

    Server: Microsoft-IIS/7.5

    X-AspNet-Version: 4.0.30319

    X-Powered-By: ASP.NET

    Date: Mon, 07 Nov 2016 05:05:20 GMT

    Content-Length: 8687

     

    <?xml version="1.0" encoding="utf-8"?>

    <wap-provisioningdoc version="1.1">

    <characteristic type="VERS">

    <parm name="version" value="20160401" />

    <parm name="validity" value="300" />

    </characteristic>

    <characteristic type="APPLICATION">

    <parm name="AppID" value="ap2001" />

    <parm name="Name" value="IMS Settings" />

    <parm name="AppRef" value="ims" />

    <characteristic type="ConRefs">

    <parm name="ConRef" value="0" />

    </characteristic>

    <parm name="PDP_ContextOperPref" value="0" />

    <parm name="Timer_T1" value="500" />

    <parm name="Timer_T2" value="4000" />

    <parm name="Timer_T4" value="5000" />

    <parm name="Private_User_Identity" value="001001123456789@ims.mnc001.mcc001.pub.3gppnetwork.org" />

    <characteristic type="Public_User_Identity_List">

    <parm name="Public_User_Identity" value="sip:001010123456789@ims.mnc001.mcc001.3gppnetwork.org" />

    </characteristic>

    <parm name="Home_network_domain_name" value="msg.testnet.com" />

    <characteristic type="Ext">

    <parm name="NatUrlFmt" value="0" />

    <parm name="IntUrlFmt" value="1" />

    <parm name="Q-Value" value="0.5" />

    <characteristic type="SecondaryDevicePar">

    <parm name="VoiceCall" value="0" />

    <parm name="Chat" value="0" />

    <parm name="SendSms" value="0" />

    <parm name="SendMms" value="0" />

    <parm name="FileTransfer" value="0" />

    <parm name="VideoShare" value="0" />

    <parm name="ImageShare" value="0" />

    <parm name="VideoCall" value="0" />

    <parm name="GeoLocPush" value="0" />

    </characteristic>

    <parm name="MaxSizeImageShare" value="5242880" />

    <parm name="MaxTimeVideoShare" value="300" />

    <characteristic type="Ext" />

    </characteristic>

    <characteristic type="ICSI_List">

    <parm name="ICSI" value="" />

    <parm name="ICSI_Resource_Allocation_Mode" value="" />

    </characteristic><characteristic type="LBO_P-CSCF_Address">

    <parm name="Address" value="ss.epdg.epc.mnc001.mcc001.pub.3gppnetwork.org" />

    <parm name="AddressType" value="FQDN" />

    </characteristic><parm name="Voice_Domain_Preference_E_UTRAN" value="1" />

    <parm name="SMS_Over_IP_Networks_Indication" value="1" />

    <parm name="Keep_Alive_Enabled" value="0" />

    <parm name="Voice_Domain_Preference_UTRAN" value="1" />

    <parm name="Mobility_Management_IMS_Voice_Termination" value="1" />

    <parm name="RegRetryBaseTime" value="300" />

    <parm name="RegRetryMaxTime" value="3600" />

    <characteristic type="PhoneContext_List">

    <parm name="PhoneContext" value="0" />

    <parm name="Public_User_Identity" value="sip:+14448880000@msg.testnet.com" />

    </characteristic><characteristic type="APPAUTH"><parm name="AuthType" value="AKA" />

    <parm name="Realm" value="msg.testnet.com" />

    <parm name="UserName" value="001001123456789@ims.mnc001.mcc001.pub.3gppnetwork.org" />

    <parm name="UserPwd" value="ims*1234" />

    </characteristic>

    </characteristic>

    <characteristic type="APPLICATION">

    <parm name="AppID" value="ap2002" />

    <parm name="Name" value="RCS Settings" />

    <parm name="AppRef" value="rcs" />

    <characteristic type="IMS">

    <parm name="To-AppRef" value="ims" />

    <characteristic type="Ext">

    <parm name="rcsVolteSingleRegistration" value="1" />

    </characteristic>

    </characteristic>

    <characteristic type="SERVICES">

    <parm name="presencePrfl" value="1" />

    <parm name="ChatAuth" value="1" />

    <parm name="GroupChatAuth" value="1" />

    <parm name="ftAuth" value="1" />

    <parm name="standaloneMsgAuth" value="1" />

    <parm name="geolocPushAuth" value="0" />

    <parm name="geolocPullAuth" value="0" />

    <parm name="VSAuth" value="0" />

    <parm name="ISAuth" value="0" />

    <parm name="rcsIPVoiceCallAuth" value="1" />

    <parm name="rcsIPVideoCallAuth" value="1" />

    <characteristic type="Ext" />

    </characteristic>

    <characteristic type="PRESENCE">

    <parm name="AvailabilityAuth" value="1" />

    <characteristic type="FAVLINK">

    <parm name="AutMa" value="Auto" />

    <characteristic type="LINKS">

    <parm name="OpFavUrl1" value="" />

    <parm name="OpFavUrl2" value="" />

    <parm name="OpFavUrl3" value="" />

    </characteristic>

    <parm name="LabelMaxLength" value="200" />

    </characteristic>

    <parm name="IconMaxSize" value="204800" />

    <parm name="NoteMaxSize" value="200" />

    <characteristic type="VIPCONTACTS">

    <parm name="NonVipPollPeriodSetting" value="200" />

    <parm name="NonVipMaxPollPerPeriod" value="1" />

    </characteristic>

    <parm name="PublishTimer" value="3600" />

    <parm name="NickNameLength" value="200" />

    <characteristic type="Location">

    <parm name="TextMaxLength" value="200" />

    <parm name="LocInfoMaxValidTime" value="86400" />

    </characteristic><characteristic type="Ext" />

    <parm name="client-obj-datalimit" value="4096" />

    <parm name="content-serveruri" value="" />

    <parm name="source-throttlepublish" value="30" />

    <parm name="max-number-ofsubscriptions-inpresence-list" value="100" />

    <parm name="service-uritemplate" value="rcs" />

    <parm name="RLS-URI" value="" />

    </characteristic><characteristic type="XDMS">

    <parm name="RevokeTimer" value="86400" />

    <parm name="enablePNBManagement" value="0" />

    <parm name="enableXDMSubscribe" value="0" />

    <characteristic type="Ext" />

    <parm name="XCAPRootURI" value="xcap.ims.mnc001.mcc001.pub.3gppnetwork.org" />

    <parm name="XCAPAuthenticationUserName" value="GBA" />

    <parm name="XCAPAuthenticationSecret" value="GBA" />

    <parm name="XCAPAuthenticationType" value="GBA" />

    </characteristic><characteristic type="SUPL">

    <parm name="TextMaxLength" value="200" />

    <parm name="LocInfoMaxValidTime" value="43200" />

    <parm name="geolocPullOpen" value="0" />

    <parm name="geolocPullApiGwAddress" value="" />

    <parm name="geolocPullBlockTimer" value="0" />

    <characteristic type="Ext" />

    <parm name="Addr" value="" />

    <parm name="AddrType" value="" />

    </characteristic><characteristic type="IM">

    <parm name="imMsgTech" value="1" />

    <parm name="imCapAlwaysON" value="1" />

    <parm name="GroupChatFullStandFwd" value="1" />

    <parm name="GroupChatOnlyFStandFwd" value="1" />

    <parm name="imWarnSF" value="0" />

    <parm name="SmsFallBackAuth" value="1" />

    <parm name="imCapNonRCS" value="1" />

    <parm name="imWarnIW" value="0" />

    <parm name="AutAccept" value="1" />

    <parm name="AutAcceptGroupChat" value="1" />

    <parm name="imSessionStart" value="0" />

    <parm name="firstMessageInvite" value="0" />

    <parm name="TimerIdle" value="210" />

    <parm name="MaxConcurrentSession" value="10" />

    <parm name="multiMediaChat" value="1" />

    <parm name="MaxSize1to1" value="1000" />

    <parm name="MaxSize1toM" value="1000" />

    <parm name="ftWarnSize" value="9999999" />

    <parm name="MaxSizeFileTr" value="10240" />

    <parm name="ftThumb" value="1" />

    <parm name="ftStAndFwEnabled" value="0" />

    <parm name="ftCapAlwaysON" value="0" />

    <parm name="ftAutAccept" value="1" />

    <parm name="ftHTTPCSURI" value="" />

    <parm name="ftHTTPCSUser" value="" />

    <parm name="ftHTTPCSPwd" value="" />

    <parm name="ftDefaultMech" value="MSRP" />

    <characteristic type="Ext" />

    <parm name="pres-srv-cap" value="1" />

    <parm name="deferred-msg-func-uri" value="sip:CPMDeferredMsgMgmt@msg.testnet.com" />

    <parm name="max_adhoc_group_size" value="21" />

    <parm name="conf-fcty-uri" value="sip:adhoc@msg.testnet.com" />

    <parm name="exploder-uri" value="sip:adhoc@msg.testnet.com" />

    <parm name="CPMControllingFuncUri" value="sip:adhoc@msg.testnet.com" />

    </characteristic>

    <characteristic type="CPM">

    <characteristic type="StandaloneMsg">

    <parm name="MaxSizeStandalone" value="600" />

    </characteristic>

    <characteristic type="MessageStore">

    <parm name="Url" value="" />

    <parm name="AuthProt" value="0" />

    <parm name="UserName" value="" />

    <parm name="UserPwd" value="" />

    </characteristic>

    <characteristic type="Ext" />

    </characteristic>

    <characteristic type="CAPDISCOVERY">

    <parm name="pollingPeriod" value="300" />

    <parm name="pollingRate" value="20" />

    <parm name="pollingRatePeriod" value="1" />

    <parm name="capInfoExpiry" value="300" />

    <parm name="defaultDisc" value="1" />

    <parm name="capDiscCommonStack" value="0" />

    <characteristic type="Ext" />

    </characteristic>

    <characteristic type="APN">

    <parm name="rcseOnlyAPN" value="ims" />

    <parm name="enableRcseSwitch" value="-1" />

    <parm name="alwaysUseIMSAPN" value="1" />

    <characteristic type="Ext" />

    </characteristic>

    <characteristic type="OTHER">

    <parm name="endUserConfReqId" value="sip:1234567890@msg.testnet.com" />

    <parm name="allowVSSave" value="1" />

    <characteristic type=" transportProto">

    <parm name="psSignalling" value="SIPoUDP" />

    <parm name="psMedia" value="MSRP" />

    <parm name="psRTMedia" value="RTP" />

    <parm name="wifiSignalling" value="SIPoUDP" />

    <parm name="wifiMedia" value="MSRP" />

    <parm name="wifiRTMedia" value="RTP" />

    </characteristic><parm name="uuid_Value" value="0" />

    <parm name="IPCallBreakOut" value="0" />

    <parm name="IPCallBreakOutCS" value="0" />

    <parm name="rcsIPVideoCallUpgradeFromCS" value="0" />

    <parm name="rcsIPVideoCallUpgradeOnCapError" value="0" />

    <parm name="rcsIPVideoCallUpgradeAttemptEarly" value="0" />

    <characteristic type="Ext" />

    </characteristic>

    <characteristic type="SERVICEPROVIDEREXT" />

    </characteristic>

    </wap-provisioningdoc>