Cisco Support Community
cancel
Showing results for 
Search instead for 
Did you mean: 

CUCM SIP trunk to IM & Presence server using SRV

The implementation of SRV records in the SIP trunk communication between CUCM and IM&P is simple, but it is often confusing as the documentations does not explain it much. This document explains the integration with the help of screen shots, and I hope that this will help you in understanding the setup clearly.

 

================================================

 

Scenario

---------

 

FOr High Availability, it is advised to add multiple CUP servers in the destination address of SIP Trunk between CUCM and CUP. We can add upto 16 IP Addresses as SIP Trunk destination.

 

However many admins find SRV records to be a more convenient way. Also, we can use SRV to add CUCM Presence Gateway in IM&P server.

 

Servers Used:

 

CUCM 10.x

IM&P 10.x

Jabber for Windows 9.7.1

But the same configuration is applicable for previous the versions of above clients

 

CONFIGURATIONS IN DNS SERVER

 

a) The first step is to create 2 DNS sub-domains under the main DNS domain - one for CUCM and one for CUP SRV.

 

In my lab, I created the subdomains as follows:

 

DNS Config

 

b) Now, we need to add the below SRV entries:

 

               1) _sip._tcp.subdomain1.domain

               2)_sip._tcp.subdomain2.domain

 

In my lab, the domains are

 

_sip._tcp.cup.ccie.com

_sip._tcp.cucm.ccie.com

 

c) Verify from your network if the SRV's are resolvable. Also double check if DNS server details are added in the UC servers.

 

To resolve SRV from command prompt:

 

nslookup

set type=srv

_sip._tcp.cup.domain.com

 

CONFIGURATIONS IN CUCM

 

a) Create the CUCM SIP Trunk towards IM&P server. In the destination address field, add the details as follows.

 

2

 

As you would have noticed, only the subdomain.domain should be added here. The CCM service prefixes _sip._tcp in the SRV request.

 

b) Save the Trunk and Reset. Now you would see the below request from the CUCM server in DNS server.

 

3

 

C) Add the SIP Trunk as IM and Presence Publish Trunk in CCM Service Parameter

 

 

Now the configuration in CUCM is complete.

 

 

CONFIGURATIONS IN IM&P SERVER

 

 

a) Presence --> Presence Gateway

 

Create a CUCM PRESENCE gateway, and as follows.

 

 

This configuration specifies the servers from where Phone presence is accepted. Please note that we should give the complete name of CUCM SRV record here.

 

b) Now in System --> Service Parameter, specify the SRV cluster name as follows.

 

 

This parameter should be configured with the CUP sub-domain.

 

==================================================

 

HA when DNS Server is down

===========

The IM&P server caches the SRV information, and the Phone service was not affected while I brought down the DNS service. I have not done much tests though. The SRV information is updated when you reset the trunk.

 

====================================================================

Troubleshooting:

 

I'm adding a couple of snippets from traces hoping it may help you while analysing logs.

 

CCM Traces

 

---------------

My Phone goes Off-hook

 


00201826.000 |14:15:32.275 |SdlSig   |SIPOffHookInd                          |null0                          |SIPStationCdfc(1,100,74,88)      |SIPStationD(1,100,73,10)         |1,100,14,6359.258^10.106.89.196^SEPACA016FCED1D |[R:N-H:0,N:2,L:0,V:0,Z:0,D:0]

00201842.000 |14:15:32.276 |SdlSig   |SIPPublishReq                          |wait                           |SIPHandler(1,100,79,1)           |PublishEPA(1,100,113,8)         
00201842.001 |14:15:32.276 |AppInfo  |//SIP/SIPHandler/ccbId=0/scbId=1951/ccsip_publish_request: Got DeviceName By SipAddr, Device is IMP-trunk
00201842.010 |14:15:32.276 |AppInfo  |//SIP/Stack/Transport/0x0/sipSPIUpdateTCBFromTargetInfo: Dialog Transaction Address 10.106.89.222,Port 5070, Port Present TRUE, Transpo

Now Publish Message is sent to IM&P Server

00201852.001 |14:15:32.278 |AppInfo  |SIPTcp - wait_SdlSPISignal: Outgoing SIP TCP message to 10.106.89.222 on port 5070 index 30
[5441,NET]
PUBLISH sip:nirmal@10.106.89.222:5070 SIP/2.0
Via: SIP/2.0/TCP 10.106.89.221:5060;branch=z9hG4bK8230bd4cc4
From: <sip:nirmal@10.106.89.221>;tag=1167129672
To: <sip:nirmal@10.106.89.222>
Call-ID: eb7d6380-389196ac-80-dd596a0a@10.106.89.221
CSeq: 101 PUBLISH
Max-Forwards: 70
Date: Sat, 31 May 2014 08:45:32 GMT
User-Agent: Cisco-CUCM10.0
Event: presence
Expires: 3599
SIP-If-Match: 905e3b7e-27e6-4c5c-87a8-2b1939903f8f
Content-Type: application/pidf+xml
Content-Length: 928

 

I had set the TCP port to 5060 in DNS SRV. However the Publish message is sent over the port 5070. This is the listening TCP  port for Presence Engine service.

 

 

And, in PE engine logs, I see it receiving the message and replying with 200 OK.

PUBLISH sip:nirmal@10.106.89.222:5070 SIP/2.0
Via: SIP/2.0/TCP 10.106.89.221:5060;branch=z9hG4bK8230bd4cc4
From: <sip:nirmal@10.106.89.221>;tag=1167129672
To: <sip:nirmal@10.106.89.222>
Call-ID: eb7d6380-389196ac-80-dd596a0a@10.106.89.221
CSeq: 101 PUBLISH
Max-Forwards: 70
Date: Sat, 31 May 2014 08:45:32 GMT
User-Agent: Cisco-CUCM10.0
Event: presence
Expires: 3599
SIP-If-Match: 905e3b7e-27e6-4c5c-87a8-2b1939903f8f
Content-Type: application/pidf+xml
Content-Length: 928

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<presence xmlns="urn:ietf:params:xml:ns:pidf" entity="nirmal@10.106.89.221" xmlns:r="urn:ietf:params:xml:ns:pidf:status:rpid" xmlns:ce="urn:cisco:params:xml:ns:pidf:rpid" xmlns:dm="urn:ietf:params:xml:ns:pidf:data-model" xmlns:so="urn:cisco:params:xml:ns:pidf:source" xmlns:sc="urn:ietf:params:xml:ns:pidf:servcaps">
  <tuple id="2001f93d-61e6-40e2-9055-0b033b8b1a9d-eb4ee294-de56-4676-b282-aba06b3db8c3">
    <status>
    <basic>closed</basic>
    </status>
    <r:activities><r:busy/></r:activities>
    <sc:servcaps>
      <sc:audio>true</sc:audio>
    </sc:servcaps>
    <contact priority="0.8">sip:1002@10.106.89.221:5060;dpkid=eb4ee294-de56-4676-b282-aba06b3db8c3;npkid=2001f93d-61e6-40e2-9055-0b033b8b1a9d</contact>
    <model>Cisco-CP9971/9.4.1</model>
    <deviceID>ACA016FCED1D</deviceID>
    <timestamp>2014-05-31T08:45:32Z</timestamp>
  </tuple>
</presence>

 

 

If you check the Publish message content, you may notice the below part

 

<r:activities><r:busy/></r:activities>
    <sc:servcaps>
      <sc:audio>true</sc:audio>

 

This indicates that the user is busy over an Audio call, and Presence engine understands that the user is on a call.

 

 

Now IM&P sends the Presence update to Jabber client.

 

 

 

While in Jabber

 

Below message indicates that it received a message from the server regarding change in status


2014-05-31 14:04:10,793 INFO  [0x00000efc] [\ExtensionProviderFunctionsImpl.cpp(582)] [cuc-extension-provider] [OnContactPresenceUpdated] - Received presence updated message for nirmal@ccie.comEntering
2014-05-31 14:04:10,793 DEBUG [0x00000efc] [mp\handlers\PresenceChangeHandler.cpp(0)] [imp.service] [PresenceChangeHandler::execute] - Exit

==============

IsSystemStatusChange=1 - This indicates that this is triggered from IM&P server, not from Jabber client.

 

2014-05-31 14:04:14,759 DEBUG [0x00000efc] [sets\adapters\imp\components\Log.cpp(32)] [JabberWerx] [IMPStackCap::Log::log] - [XmppSDK.dll]: Fire_OnPresenceChanged, jid: nirmal@ccie.com/composed,presence:3,msg:on the phone,priority:127, custom status:0, type:0timeStamp  1401545583


2014-05-31 14:04:14,759 INFO  [0x00000efc] [sets\adapters\imp\components\Log.cpp(33)] [JabberWerx] [IMPStackCap::Log::log] - [XmppMgr.dll]: #0, CXmppPresenceDoc::OnPresenceChange  jid=nirmal@ccie.com/composed oldstatefromsdk=2 newstatefromsdk=3 usertypefromsdk=0 statustextfromsdk=on the phone priorityfromsdk=127 IsSystemStatusChange=1 dwCustomStatus0

 

Hope this helps. Please let me know your questions or suggestions

 

 

Thank you

Nirmal Issac

Version history
Revision #:
1 of 1
Last update:
‎05-31-2014 05:05 AM
Updated by:
 
Labels (1)
Comments

1 - Can you show the output of NSLOOKUP to reveal the exact SRV records you put into your DNS?

 

2 - You say "I had set the TCP port to 5060 in DNS SRV. However the Publish message is sent over the port 5070". So did you have to change your SRV record to port 5070, or did CUCM work it out?

Cisco Employee

Hi Gordon,

 

1)Please find the below output of NSLOOKUP from my PC. I set the timeout to 120 because my DNS server is slow to respond.

 

 

2) You are correct. CUCM forwarded the information to the port 5070. I had set the port 5060 in both the SRV records.

 

Please let me know if you have any questions :)

 

Thank you

Nirmal Issac

New Member

Thanks Heaps,

Could you please tell me which traces you downloaded \ enabled for the debugs?

 

So CUCM sends to presences SRV (weighted or round robin) to one presence server then presence gets this message and uses the cluster wide SRV to further broadcast the message to other members in the cluster?

Cisco Employee

Hi Andrew,

 

From CUCM, I obtained CCM traces, and

 

from IM&P server -

 

Presence Engine (Receives Publish from CUCM and notifies XCP Router)

XCP Router (Sends XMPP update to Jabber client)

 

 

"So CUCM sends to presences SRV (weighted or round robin) to one presence server then presence gets this message and uses the cluster wide SRV to further broadcast the message to other members in the cluster?"

 

The CUCM uses the SRV to locate th IM&P server and then publishes Presence status (as per the weight/round Robin). When a IM&P node is not reachable, CUCM knows which node to contact next.

 

 

Hope this helps,

 

Nirmal

New Member

Thanks Nirmal,

Can you also elabourate on the clusterwide SRV? 

Thanks for the trace information, I just set this up however having probelms.

New Member

Hi Nirmal,

 

Just wanted to say thanks for authoring this topic, really helpful and informative.

 

One question though with regards to the SRV records, whilst I was digging around for info on this topic I found your post and these links

 

http://www.cisco.com/c/en/us/td/docs/voice_ip_comm/jabber/Windows/9_7/CJAB_BK_C606D8A9_00_cisco-jabber-dns-configuration-guide/CJAB_BK_C606D8A9_00_cisco-jabber-dns-configuration-guide_chapter_010.html

 

http://www.cisco.com/c/en/us/td/docs/voice_ip_comm/jabber/Windows/9_7/CJAB_BK_C606D8A9_00_cisco-jabber-dns-configuration-guide/CJAB_BK_C606D8A9_00_cisco-jabber-dns-configuration-guide_chapter_010.html

 

Both of these recommend using _cuplogin._tcp for the DNS SRV record for Jabber, will your records still work for Jabber clients looking for Presence servers.

 

Thanks in advance.

 

Regards,

 

Liam

The _cupslogin entries are supposed to be only needed for 8.x Jabber clients. v9+ clients are supposed to use the new _cisco-uds entries.

 

GTG

New Member

Hi Nirmal,

Usefull document, thanks.

I have a question regarding high availability.

In document "Configuration and Administration of IM and Presence Service on Cisco Unified Communications Manager, Release 10.5(1)"

Part - "SIP Trunk Configuration on Cisco Unified Communications Manager" - "Configure SIP Trunk for IM and Presence Service" we can see following phrase:

---8<---

If high availability is configured for the IM and Presence cluster, multiple entries should be entered in the
Dotted IP Address or FQDN to identify the various nodes in the cluster. DNS SRV cannot be used for an IMand Presence cluster if high availability is configured.

---8<---

So as I understand we cant use DNS SRV if we would like to use high availability.

Does high availability functionality works in your case?

 

BR

Artem

Hi,

 

Also I see that new 10.5 version can use multiple dotted addresses in the sip trunk for HA

 

Please confirm that this method will let the CUCM to send sip publish messages to both im and presence servers that I'm finding HA issue and I'm using this method

 

Thanks

Hello Nirmal,

Very good documentation (+5)

Regards

Leonardo Santana

New Member

on my CUPS 10.5.2. Do I need use multiple CUCM server ip for Presence Gateway Configuration   page.

We added only CUCM publisher  node Presence Gateway Configuration   page .

Do I need  add  both of the CUCM server.

Thanks,