08-07-2015 05:24 AM - edited 03-12-2019 10:18 AM
Service discovery enables clients to automatically detect and locate services on your enterprise network. Clients query domain name servers to retrieve service (SRV) records that provide the location of servers.
Speeds time to deployment.
Allows you to centrally manage server locations.
This document describes the configuration required for service discovery and the workflow.
Domain : apps.com
CUCM : CUCMPUB10
IM&P : CUPSPUB10
Step 1 : Make sure the Host record for CUCM and IM&P nodes are configured for your domain
Follow the below procedure from the command prompt of PC which is connected to domain
C:\Users\admin>nslookup
> set type=srv
> _cisco-uds._tcp.apps.com
Server: UnKnown
Address: 10.106.112.52
_cisco-uds._tcp.apps.com SRV service location:
priority = 0
weight = 1
port = 8443
svr hostname = cucmpub10.apps.com
cucmpub10.apps.com internet address = 10.106.112.6
>
> _cuplogin._tcp.apps.com
Server: UnKnown
Address: 10.106.112.52
_cuplogin._tcp.apps.com SRV service location:
priority = 0
weight = 1
port = 8443
svr hostname = cupspub10.apps.com
cupspub10.apps.com internet address = 10.106.112.7
When it returns the correct FQDN and IP address we can confirm that it has been configured correctly.
Note : To verify for your setup, replace apps.com with your domain.
Jabber sends all requests (HTTP and DNS requests) simultaneously to the below:
Among the successful return, the record with highest priority will be used for connecting to services:
Priority | Service | Request Sent |
1 | Webex Messenger | HTTP CAS lookup |
2 | CUCM | _cisco-uds._tcp.<domain_name> |
3 | CUPS / IMP | _cuplogin._tco.<domain_name> |
4 | Expressway | _collab_edge._tls.<domain_name> |
User enter userid@domain.com
2015-03-22 19:21:48,812 DEBUG [0x0000085c] [indowplugin\LifecycleController.cpp(421)] [plugin-runtime] [OnEmailEntered] - Enter - emailAddress = inna@apps.com
Sends out DNS requests:
2015-03-22 19:21:48,875 INFO [0x00000b84] [rc\dnsutils\win32\win32DnsUtils.cpp(273)] [csf.dns] [dns::DnsUtils::executeSRVRecordQuery] - About to make DNS SRV record query '_cisco-uds._tcp.apps.com.'
2015-03-22 19:21:48,875 INFO [0x00000b84] [src\dnsutils\win32\win32DnsUtils.cpp(47)] [csf.dns] [dns::mapFromWindowsDNSResult] - *-----* DNS query _cisco-uds._tcp.apps.com. has succeeded.
2015-03-22 19:21:48,875 INFO [0x00000b84] [src\edge\EnterpriseNetworkSensor.cpp(24)] [csf.edge] [logSensorEvaluation] - EnterpriseNetworkSensor strategy FindAnyInternalRecordWithLatching evaluated to true
2015-03-22 19:21:48,875 DEBUG [0x00000b84] [dge\EdgeDetectionControllerImpl.cpp(342)] [csf.edge] [edge::EdgeDetectionControllerImpl::initData] - Finished evaluation with EnterpriseNetworkSensor. Internal Connectivity: 1
2015-03-22 19:21:48,875 INFO [0x00000b84] [rc\dnsutils\win32\win32DnsUtils.cpp(273)] [csf.dns] [dns::DnsUtils::executeSRVRecordQuery] - About to make DNS SRV record query '_collab-edge._tls.apps.com.'
2015-03-22 19:21:48,875 WARN [0x00000b84] [src\dnsutils\win32\win32DnsUtils.cpp(52)] [csf.dns] [dns::mapFromWindowsDNSResult] - *-----* DNS query _collab-edge._tls.apps.com. has failed: DNS name does not exist.
Jabber is connected internally and hence the DNS request towards _collab-edge._tls.apps.com. failed.
CAS URL lookup request to webex messenger:
2015-03-22 19:21:48,890 INFO [0x00000b84] [etutils\src\http\CurlHttpUtils.cpp(1163)] [csf.httpclient] [http::CurlHttpUtils::configureEasyRequest] - *-----* Making HTTP request to: http://loginp.webexconnect.com/cas/FederatedSSO?or
Receives HTTP response with 0:
2015-03-22 19:21:59,966 INFO [0x00000b84] [ls\src\http\BasicHttpClientImpl.cpp(410)] [csf.httpclient] [http::executeImpl] - *-----* HTTP response from: http://loginp.webexconnect.com/cas/FederatedSSO?or
2015-03-22 19:21:59,966 ERROR [0x00000b84] [ls\src\http\BasicHttpClientImpl.cpp(414)] [csf.httpclient] [http::executeImpl] - There was an issue performing the call to curl_easy_perform: CONNECTION_TIMEOUT_ERROR
2015-03-22 19:21:59,966 WARN [0x00000b84] [\casdiscovery\CasLookupQueryImpl.cpp(52)] [service-discovery] [CasLookupQueryImpl::executeCasQuery] - CAS lookup failed: Http connection failed.
Can see jabber mention that the apps.com is not a webex customer.
2015-03-22 19:21:59,966 INFO [0x00000b84] [scovery\ServiceDiscoveryHandler.cpp(504)] [service-discovery] [ServiceDiscoveryHandler::Discover] - Domain 'apps.com' is not a webex customer. Making Ucm90 Based Discovery with DnsQueryDomain: 'apps.com'
If in case you have the webex cloud alive, jabber getting authenticated against webex messenger can be avoided by configuring "Excluded services
_cisco-uds SRV record being used as webex CAS lookup failed:
2015-03-22 19:21:59,966 INFO [0x00000b84] [quest\ServiceDiscoveryDnsSession.cpp(68)] [service-discovery] [ServiceDiscoveryDnsSession::shouldDnsRequestBeTri
2015-03-22 19:21:59,966 INFO [0x00000b84] [t\DnsEdgeServiceDiscoveryRequest.cpp(37)] [service-discovery] [DnsEdgeServiceDiscoveryRequest::makeDiscoveryRequ
2015-03-22 19:21:59,966 INFO [0x00000b84] [elocator\EdgeDetectionDnsService.cpp(79)] [service-discovery] [EdgeDetectionDnsService::getInternalRecordsFromDn
2015-03-22 19:21:59,966 INFO [0x00000b84] [src\dnsutils\win32\win32DnsUtils.cpp(47)] [csf.dns] [dns::mapFromWindowsDNSResult] - *-----* DNS query _cisco-uds._tcp.apps.com. has succeeded.
Updates domain information:
2015-03-22 19:21:59,982 DEBUG [0x00000b84] [ces\impl\ucm-config\DnsProvider.cpp(130)] [csf.config] [ucm90::DnsProvider::addPotentialDomain] - Updated domain information:
*------------------------------------*
| ucm-config Library DNS Information
| Highest Priority Domain: apps.com
| DNS Record: cucmpub10.apps.com:8443 [weight: 0, priority: 0]
| Domain Source: apps.com : LOCATOR_UDS_DOMAIN
| Domain Source: apps.com : SERVICE_DISCOVERY_DOMAIN
*------------------------------------*
Now it tries with _cisco-uds SRV record as the webex CAS lookup failed:
2015-03-22 19:21:59,966 INFO [0x00000b84] [quest\ServiceDiscoveryDnsSession.cpp(68)] [service-discovery] [ServiceDiscoveryDnsSession::shouldDnsRequestBeTri
2015-03-22 19:21:59,966 INFO [0x00000b84] [t\DnsEdgeServiceDiscoveryRequest.cpp(37)] [service-discovery] [DnsEdgeServiceDiscoveryRequest::makeDiscoveryRequ
2015-03-22 19:21:59,966 INFO [0x00000b84] [elocator\EdgeDetectionDnsService.cpp(79)] [service-discovery] [EdgeDetectionDnsService::getInternalRecordsFromDn
2015-03-22 19:21:59,966 INFO [0x00000b84] [src\dnsutils\win32\win32DnsUtils.cpp(47)] [csf.dns] [dns::mapFromWindowsDNSResult] - *-----* DNS query _cisco-uds._tcp.apps.com. has succeeded.
Config files download:
Jabber will fetch all required data from the server using HTTP request. thought it downloads more file here are the list of imporatant files downlaoded:
>> HOME_CLUSTER_XML : homeClusterUser.xml
>> DEVICE_XML : CSFINNA.cnf.xml
>> SERVICE_PROFILE_XML : SP0a920736-c32e-d40a-422f-d030784b16f1.cnf.xml
>> GLOBAL_SETTINGS_XML : global-settings.xml
Here is the list of HTTP request that jabber sends:
2015-03-22 19:21:59,997 INFO [0x00000b84] [etutils\src\http\CurlHttpUtils.cpp(1163)] [csf.httpclient] [http::CurlHttpUtils::configureEasyRequest] - *-----* Making HTTP request to: https://cucmpub10.apps.com:8443/cucm-uds/version [1]
2015-03-22 19:22:00,606 INFO [0x00000b84] [etutils\src\http\CurlHttpUtils.cpp(1163)] [csf.httpclient] [http::CurlHttpUtils::configureEasyRequest] - *-----* Making HTTP request to: https://cucmpub10.apps.com:8443/cucm-uds/clusterUs
2015-03-22 19:22:00,715 INFO [0x00000b84] [etutils\src\http\CurlHttpUtils.cpp(1163)] [csf.httpclient] [http::CurlHttpUtils::configureEasyRequest] - *-----* Making HTTP request to: https://cucmpub10.apps.com:8443/cucm-uds/clusterUs
2015-03-22 19:22:00,731 INFO [0x00000b84] [etutils\src\http\CurlHttpUtils.cpp(1163)] [csf.httpclient] [http::CurlHttpUtils::configureEasyRequest] - *-----* Making HTTP request to: https://CUCMPUB10:8443/cucm-uds/servers [4]
2015-03-22 19:22:00,824 INFO [0x00000b84] [etutils\src\http\CurlHttpUtils.cpp(1163)] [csf.httpclient] [http::CurlHttpUtils::configureEasyRequest] - *-----* Making HTTP request to: https://CUCMPUB10:8443/ssosp/ws/public/singleSignO
2015-03-22 19:22:23,491 INFO [0x000009f0] [etutils\src\http\CurlHttpUtils.cpp(1163)] [csf.httpclient] [http::CurlHttpUtils::configureEasyRequest] - *-----* Making HTTP request to: http://loginp.webexconnect.com/cas/FederatedSSO?or
2015-03-22 19:22:35,488 INFO [0x000009f0] [etutils\src\http\CurlHttpUtils.cpp(1163)] [csf.httpclient] [http::CurlHttpUtils::configureEasyRequest] - *-----* Making HTTP request to: https://CUCMPUB10:8443/cucm-uds/user/inna [7]
2015-03-22 19:22:36,190 INFO [0x000009f0] [etutils\src\http\CurlHttpUtils.cpp(1163)] [csf.httpclient] [http::CurlHttpUtils::configureEasyRequest] - *-----* Making HTTP request to: https://CUCMPUB10:8443/cucm-uds/user/inna/devices [8]
2015-03-22 19:22:36,205 INFO [0x000009f0] [etutils\src\http\CurlHttpUtils.cpp(1163)] [csf.httpclient] [http::CurlHttpUtils::configureEasyRequest] - *-----* Making HTTP request to: http://CUCMPUB10:6970/CSFINNA.cnf.xml [9]
2015-03-22 19:22:36,252 INFO [0x000009f0] [etutils\src\http\CurlHttpUtils.cpp(1163)] [csf.httpclient] [http::CurlHttpUtils::configureEasyRequest] - *-----* Making HTTP request to: http://CUCMPUB10:6970/SP0a920736-c32e-d40a-422f-d0
2015-03-22 19:22:36,268 INFO [0x000009f0] [etutils\src\http\CurlHttpUtils.cpp(1163)] [csf.httpclient] [http::CurlHttpUtils::configureEasyRequest] - *-----* Making HTTP request to: http://CUCMPUB10:6970/global-settings.xml [11]
Can also see downloaded files and their names like below at the end of each file download. It writes the summary of downloaded files like below:
UCM version: 10.5.1
UCM domain: apps.com
UCM publisher: CUCMPUB10
Current Home UDS URL: https://CUCMPUB10:8443/cucm-uds/user/inna
[HOME_CLUSTER_XML]
[URL] https://CUCMPUB10:8443/cucm-uds/user/inna
[Host] CUCMPUB10
[Filename] homeClusterUser.xml
[XML] <?xml version="1.0" encoding="UTF-8" standalone="y...
[SERVICE_PROFILE_XML]
[URL] http://CUCMPUB10:6970/SP0a920736-c32e-d40a-422f-d
[Host] CUCMPUB10
[Filename] SP0a920736-c32e-d40a-422f-d030784b16f1.cnf.xml
[XML] <serviceProfile>
<versionStamp>1423494380-cacddd5...
[DEVICE_XML]
[URL] http://CUCMPUB10:6970/CSFINNA.cnf.xml
[Host] CUCMPUB10
[Filename] CSFINNA.cnf.xml
[XML] <device xsi:type="axl:XIPPhone" ctiid="7" uuid="{...
[GLOBAL_SETTINGS_XML]
[URL] http://CUCMPUB10:6970/global-settings.xml
[Host] CUCMPUB10
[UDS_SERVERS]
[1] CUCMPUB10
[HOME_UDS_NODES]
[1] https://CUCMPUB10:8443/cucm-uds/user/inna
[TFTP_SERVERS]
[1] CUCMPUB10
Now it downloads the jabber-config.xml file:
2015-03-22 19:22:36,704 INFO [0x00000894] [etutils\src\http\CurlHttpUtils.cpp(1163)] [csf.httpclient] [http::CurlHttpUtils::configureEasyRequest] - *-----* Making HTTP request to: http://CUCMPUB10:6970/jabber-config.xml [12]
Jabber also writes the downloaded content to it's cache. When it writes each time can see a line like this :
2015-03-22 19:22:36,486 INFO [0x000009f0] [ervices\impl\cache\CacheManager.cpp(133)] [Cache-Logger] [CacheManager::writeToFile] - Sent cache object to disk
The conent of each file will be in the encrypted form. Here is sample for the one such:
[Name] ServiceProfile
[Name] FileName [Data] SP0a920736-c32e-d40a-422f-d030784b16f1.cnf.xml
[Name] Urls
[Name] Url [Data] http://CUCMPUB10:6970/SP0a920736-c32e-d40a-422f-d0
[Name] FileContents [Data] AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAA3YGucuR0n0OEYXs+E3
[Name] IsDefaultServiceProfile [Data] true
As jabber now has all the required information it will start the login process:
2015-03-22 19:22:36,704 INFO [0x0000085c] [s\adapters\imp\StackManagerImpl.cpp(101)] [imp.service] [IMPStackCap::StackManagerImpl::doInitialise] - Entry
2015-03-22 19:22:36,704 INFO [0x0000085c] [resets/adapters/imp/components/Log.h(37)] [csf-unified.log.h] [IMPStackCap::JabberWerxHandlerConnector<class JabberWerxCPP::JWLogger>::registerHandler] - Passing location C:\Users\admin\AppData\Local\Cisco\Unified Communications\Jabber\CSF\Logs\JabberWerxCpp to Jabberwerx as logging dir for .wbt files
2015-03-22 19:22:36,704 INFO [0x0000085c] [s\adapters\imp\StackManagerImpl.cpp(107)] [imp.service] [IMPStackCap::StackManagerImpl::doInitialise] - LoginMgr started...
2015-03-22 19:22:36,704 DEBUG [0x00000f58] [ce\src\services\impl\EventStore.cpp(435)] [csfunified.telemetry.EventStore] [telemetry::EventStore::markEventSubmittable] - Adding common data fields to Event tree.
2015-03-22 19:22:36,704 DEBUG [0x00000f58] [ce\src\services\impl\EventStore.cpp(437)] [csfunified.telemetry.EventStore] [telemetry::EventStore::markEventSubmittable] - Got value for osVersion: 'Win7SP1.0'
2015-03-22 19:22:36,704 DEBUG [0x00000f58] [ce\src\services\impl\EventStore.cpp(441)] [csfunified.telemetry.EventStore] [telemetry::EventStore::markEventSubmittable] - Got value for productName: 'J4W'
2015-03-22 19:22:36,704 DEBUG [0x00000f58] [ce\src\services\impl\EventStore.cpp(443)] [csfunified.telemetry.EventStore] [telemetry::EventStore::markEventSubmittable] - Got value for productVersion: '10.6.1.55781'
2015-03-22 19:22:36,704 DEBUG [0x00000f58] [ce\src\services\impl\EventStore.cpp(445)] [csfunified.telemetry.EventStore] [telemetry::EventStore::markEventSubmittable] - Got value for platformInfo: 'Intel(R) Xeon(R) CPU X7560 @ 2.27GHz'
2015-03-22 19:22:38,966 DEBUG [0x0000085c] [sets\adapters\imp\components\Log.cpp(32)] [JabberWerx] [IMPStackCap::Log::log] - [XmppSDK.dll]: #0, CXmppClient::onConnect
2015-03-22 19:22:38,966 INFO [0x0000085c] [sets\adapters\imp\components\Log.cpp(33)] [JabberWerx] [IMPStackCap::Log::log] - [XmppSDK.dll]: CXmppClient::onConnect, JabberServerInfo, host: 10.106.112.7, port: 5222
2015-03-22 19:22:38,966 DEBUG [0x0000085c] [sets\adapters\imp\components\Log.cpp(32)] [JabberWerx] [IMPStackCap::Log::log] - [XmppSDK.dll]: #0, CXmppClient::onStreamEvent ,CXmppClient::onStreamEvent, ConSessionState_Starting
2015-03-22 19:22:38,966 INFO [0x0000085c] [sets\adapters\imp\components\Log.cpp(33)] [JabberWerx] [IMPStackCap::Log::log] - [LoginMgr.dll]: #0, CLoginContext::InitCupHAHosts ha, soap-servers:10.106.112.7
2015-03-22 19:22:38,966 DEBUG [0x0000085c] [sets\adapters\imp\components\Log.cpp(32)] [JabberWerx] [IMPStackCap::Log::log] - [LoginMgr.dll]: #0, CLoginMgrConnectionPointContainer::Fire_OnLoginSuc
2015-03-22 19:22:38,966 INFO [0x0000085c] [sets\adapters\imp\components\Log.cpp(33)] [JabberWerx] [IMPStackCap::Log::log] - [JabberWerxCPP.DLL]: JWLoginSink::OnLoginSuccess, autologin:0
2015-03-22 19:22:38,966 DEBUG [0x0000085c] [ts\adapters\imp\components\Login.cpp(58)] [imp.service] [IMPStackCap::Login::OnLoginSuccess] - Entry
2015-03-22 19:22:38,966 INFO [0x0000085c] [ts\adapters\imp\components\Login.cpp(60)] [imp.service] [IMPStackCap::Login::OnLoginSuccess] - **************************************************
2015-03-22 19:22:38,966 INFO [0x0000085c] [ts\adapters\imp\components\Login.cpp(61)] [imp.service] [IMPStackCap::Login::OnLoginSuccess] - OnLoginSuccess (autoLogin: false)
2015-03-22 19:22:38,966 INFO [0x0000085c] [ts\adapters\imp\components\Login.cpp(62)] [imp.service] [IMPStackCap::Login::OnLoginSuccess] - **************************************************
2015-03-22 19:22:38,966 DEBUG [0x0000085c] [ets\adapters\imp\components\Login.cpp(0)] [imp.service] [IMPStackCap::Login::OnLoginSuccess] - Exit
Jabber for windows excluded services can be configured using bootstrap file or in jabber-config.xml for jabber windows clients.
Below is the sample file for jabber for windows:
<?xml version="1.0" encoding="utf-8"?>
<config version="1.0">
<Policies>
<VoiceServicesDomain>apps.com</VoiceServicesDomain
<ServiceDiscoveryExcludedServices>WEBEX</ServiceDi
</Policies>
</config>
Reference: http://www.cisco.com/c/en/us/td/docs/voice_ip_com
Note: If jabber windows never connected internally and first time login tried over edge, the excluded services will not be considered as if there is no prior jabber-config.xml file downloaded. Can try login to internally first to get the config file downloaded and from next time excluded services will be considered over edge.
For MAC, IPhone and Andriod devices URL configuration can be done to exclude services:
1. Install jabber
2. Send the URL to the user via email
3. Click on the URL, jabber will be launched and URL information will be given to jabber for service discovery
Sample URL:
ciscojabber://provision?ServicesDomain=apps.com&Vo
Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: