CPS Advanced Tuning

qns.conf

qns.conf file is the main shared configuration file which is applied to all VMs (Virtual Machines) across CPS and is located in the path /etc/broadhop/qns.conf. The following example is a typical Policy Server (QNS) configuration file, however, certain parameters may vary from customer to customer.

-DclusterFailureDetectionMS=10000
-Dcom.broadhop.run.systemId=system-1
-Dcom.broadhop.run.clusterId=cluster-1
-Dcom.broadhop.config.url=http://pcrfclient01/repos/run/
-Dcom.broadhop.repository.credentials=broadhop/broadhop@lbvip02
-Dcom.broadhop.referencedata.local.location=/var/broadhop/checkout
-Denable.compression=true
-Denable.dictionary.compression=true
-DuseZlibCompression=true
-Dcom.broadhop.locking.autodiscovery=true
-DmessageSlaMs=9000
-Dcom.broadhop.diameter.log.success.responses=true
-DsendDiameterTooBusy=true

The following table lists the common cluster-wide configuration parameters found in /etc/broadhop/qns.conf file:


Note


For any parameter change to take effect, you need to restart the process such as, qns, lb, and so on.


Table 1. qns.conf Parameters

Parameter

Description

com.broadhop.run.clusterId

Name of the cluster. This should match with the Policy Builder configuration within system configuration and can be used to define multiple cluster specially for a GR or HA deployment.

Default: cluster-1

com.broadhop.run.systemId

Name of the system. This should match with the Policy Builder configuration under system configuration. We can define multiple systems such as UAT, IOT, Production and single policy builder instance can configure all instances of CPS servers.

Default: system-1

Note

 

System can contain one or more clusters and is used to define any common things across the clusters (such as load balancing) and it varies with the type of cluster such as, HA and GR.

balanceLocalGeoSiteTag

This parameter is applicable in GR deployments only.

If primary member is not available, this parameter is used to read the records from available local or current site secondary members and perform the insert, update, and delete operations to the backup database on local (current) site. This parameter helps to reduce the response time for the operation in case of latency between the sites (avoid application to look into the remote site secondary members for the read).

For this parameter to function as expected, make sure the tags are updated in the MongoDB balance replica-set configuration. For more information, refer to Balance Query Restricted to Local Site section in the CPS Geographic Redundancy Guide.

Also, make sure the default read preference is configured in Policy Builder.

Default read preference is configured in Policy Builder

Example: -DbalanceLocalGeoSiteTag=Site1

Note

 

The value needs to be same as site1.

The value needs to be same in both qns.conf file as well as in MongoDB balance replica-set configuration.

clusterLBIF

Application uses the configured interface assigned to this parameter to create the ZMQ TCP connection between local site Policy Director (LB) and remote site Policy Director (LB) VMs.

Default: eth1

Example: -DclusterLBIF=eth1

clusterLBIFIpv6

This parameter is applicable for GR only and depends on the value of clusterLBIF parameter.

Suppose -DclusterLBIF=eth2 and:

  • -DclusterLBIFIpv6=true, then:

    IPv6 address of "eth2" interface is used for ZMQ connection for cross-site communication.

  • -DclusterLBIFIpv6=false, then:

    IPv4 address of "eth2" interface is used for ZMQ connection for cross-site communication.

Example: -DclusterLBIFIpv6=true

Default: false

Possible Values: true, false

clusterPeers

This parameters needs to be configured when there are separate sessions and no replication across sites and provisioning event is needed to broadcast to other sites.

By default, cross-site messaging does not happen until it is configured.

Example:

-DclusterPeers=failover:

(tcp://105.250.248.144:61616,tcp://105.250.248.145:61616)

?updateURIsSupported= false!Cluster-SITE-B.default

local.cluster.peer

This parameter is used to specify the local cluster name and to create local cluster queue.

This parameter is used with broadcast.skipBroadcastToAllclusters. If this parameter is configured, it will not broacast to local peers.

Example: -Dlocal.cluster.peer=Cluster1

Note

 

This parameter is applicable only when CPS act as an LDAP server to support LDAP search queries using framedIp/msisdn/imsi/framedIpv6Prefix key to get subscriber details.

The search query can come from single or multiple clusters. The cluster which receives the request forwards the request to all other clusters based on cluster peer configuration.

For more information, see:

Subscriber Lookup Server Configuration section in the CPS Mobile Configuration Guide

Subscriber Lookup Feature Installation section in the CPS Installation Guide for VMware

broadcast.cluster.peers

This parameter is used to specify all the clusters including local clusters to whom the LDAP search requests (received on the CPS LDAP Server) are broadcasted for session lookup and to create redisQ between local cluster and other clusters.

Each cluster name must be separated with semicolon. Add all the clusters including local cluster name.

Example: -Dbroadcast.cluster.peers=Cluster1;Cluster2;Cluster3

Note

 

All the broadcast clusters must be defined here.

Note

 

This parameter is applicable only when CPS act as an LDAP server to support LDAP search queries using framedIp/msisdn/imsi/framedIpv6Prefix key to get subscriber details.

The search query can come from single or multiple clusters. The cluster which receives the request forwards the request to all other clusters based on cluster peer configuration.

For more information, see:

Subscriber Lookup Server Configuration section in the CPS Mobile Configuration Guide

Subscriber Lookup Feature Installation section in the CPS Installation Guide for VMware

geoHASessionLookupType

This parameter is used to specify the lookup type to be used in Active/Active GR deployments.

For any incoming request, this parameter informs the application in which shard to look in. Session database is replicated across site. Session database of the site can be selected based on realm or host or local information.

Example: -DgeoHASessionLookupType=realm

Default: realm

Possible Values: realm, host and local

If -DgeoHASessionLookupType is set to "local", local session affinity feature is enabled.

When the lookup type is set to local, you need to configure -DmigrateSessionToLocalSite=true to migrate the sessions on CCR-U/T.

When session lookup type is set to “local”, local session database is used to read/write session irrespective of site lookup configuration. For “local” session lookup type, site lookup configuration is not required. Even if it is configured, it is not used. Firstly, it searches the local site for every incoming request and if it doesn't find it, it looks in the remote site for session shard.

You need to configure all the realms for all the interfaces (such as, Gx, Rx, and so on) here:

addsitelookup <SiteId> <LookupValue>

where, <SiteId> is the primary site ID. <LookupValue> is the realm value.

For example, if you have multiple Gx and Gy clients connected to the CPS and the details for realms of clients are as follows:

Client-1: pcef-1-Gx.cisco.com

Client-2: pcef-1-Gy.cisco.com

Client-3: pcef-2-Gx.cisco.com

Client-4: pcef-2-Gy.cisco.com

Let us consider, first two clients (Client-1 and Client-2) are connected to Site1 and Client-3 and Client-4 are connected to the Site2, then

addsitelookup Site1 pcef-1-Gx.cisco.com
addsitelookup Site1 pcef-1-Gy.cisco.com
addsitelookup Site2 pcef-2-Gx.cisco.com
addsitelookup Site2 pcef-2-Gy.cisco.com

Note

 

Make sure same realms should not be configured for both the sites. The configured realms of the Site1 and Site2 should be identical.

GeoSiteName

Name defined to identify chassis/cluster for a given site. It should uniquely identify the name within entire cluster. It is mandatory to configure this parameter if isGeoHAEnabled property is enabled.

Example: -DGeoSiteName=site1

isGeoHAEnabled

This parameter is used to enable the Active/Active GR. This parameter is applicable when Geo-HA bundle is installed.

Example: -DisGeoHAEnabled=true

Default: false

Possible Values: true, false

migrateSessionToLocalSite

When set to "true", sessions are migrated to local site while processing calls. Next request on same session would then be processed from local databases.

Note

 

Migration happens while processing primary session (GX) only.

When set to "false", session is not migrated and continues to be fetched and updated from remote site database. Support for this parameter has been added in orchestration API also.

Example: -DmigrateSessionToLocalSite=true

Default: false

Possible Values: true, false

Note

 

This parameter is recommended in conjunction with geoHASessionLookupType when set to local.

RemoteGeoSiteName

This parameter is applicable only for GR.

When the session created on Site2 and SPR update or Rx call comes on Site1, CPS sends Gx RAR from Site1 and in response PCEF sends RAA and next CCR request to Site1.

This leads to cross site call switches from Site2 to Site1. If there are lot of call switches, Site1 may get overloaded.

By default, CPS does not prevent cross-site switching. To prevent cross-site switching, user needs to set -DRemoteGeoSiteName parameter in /etc/broadhop/qns.conf file. This parameter enables cross-site communication for outbound messages such as, for RAR, if you do not have DRA outside Policy Director (lb) and want to avoid RAR switches.

-DRemoteGeoSiteName=<sitename>

where,

<sitename> is remote site name to be provided, and only to be added if you want to disable Gx-RAR switches from PCRF. It should match with the name of Geo remote site (-DGeoSiteName).

Prerequisite is both remote site and local site Policy Server (QNS) should be able to communicate to Policy Director (lb) on same interfaces.

To change interface, parameter -Dcom.broadhop.q.if=<enter replication interface name> can be used.

For cross-site communtication, isQSystemAvailable must be enabled.

RemoteSiteId

Site ID to uniquely identify remote site chassis/cluster. RemoteSiteId belongs to other site means current site is communicating to other site in case of GR deployments. You need to specify site ID of other site here.

Default: Site2

sessionLocalGeoSiteTag

This geo tagging is applicable only during database failover time period. In normal case, session database query/update always happens on primary member. This parameter is applicable in GR deployments only.

If primary member is not available, this parameter makes sure that records are read from the available local or current site secondary members and perform the insert, update, and delete operations to the backup database on local (current) site. It helps to reduce the response time for the operation in case of latency between the sites (avoid application to look into the remote site secondary members for the read).

For this parameter to function as expected, make sure the tags are updated in the MongoDB balance replica-set configuration. For more information, refer to Session Query Restribcted to Local Site during Failover in the CPS Geographic Redundancy Guide.

-DsessionLocalGeoSiteTag=<Current site name>

Example: -DsessionLocalGeoSiteTag=Site1

Note

 

The value needs to be same in both qns.conf as well as in MongoDB session replica-set configuration.

Policy Builder configuration for pb read preference is not available. It will always be primary.

SiteId

Site ID is used to identify name for the current site.

Default: Site1

sprLocalGeoSiteTag

SPR doesn't have backup database. By default, SPR lookup is secondary and preferred only if the primary is not available. It has a Policy Builder configuration to control if any transactions to read a subscriber data from SPR replica set for primary are not available.

If sprLocalGeoSiteTag is not configured and select read preference as a secondary is set in PB, there is a chance to look into other remote secondary and can see a latency response time. To avoid latency in response time, this parameter must be configured on MongoDB replica set and qns.conf file so that the application tries to read/write from locally available member results.

This parameter overrides the read preference configured in USuM Configuration in Policy Builder. Default read preference is configured in Policy Builder.

Example: -DsprLocalGeoSiteTag=Site1

migrateSessionToLocalSite

AdditionalInterfaces

This parameter is used to trigger the session migration if the network session is found on the remote site and the incoming message is Sy or Rx.

Example: -DmigrateSessionToLocalSiteAdditionalInterfaces=SY_V11,RX_TGPP

Default: GX_TGPP

Possible Values: Sy_V11, SingleSyDeviceMgr, RX_TGPP, GX_TGPP

Note

 

migrateSessionToLocalSite must be set to true to use the parameter migrateSessionToLocalSiteAdditionalInterfaces.

This parameter is applicable only to GR environment.

com.broadhop.q.if

This parameter is used to perform diameter message interprocess communication transfering between Policy Server (QNS) and Policy Director (LB) VMs. Both remote site and local site policy server (QNS) should be able to communicate to load balancer on same interfaces.

To change the interface, -Dcom.broadhop.q.if=<enter replication interface name> can be used.

Example: -Dcom.broadhop.q.if=eth0

Default: eth0

com.broadhop.q.if.ipv6

This parameter depends on the value of com.broadhop.q.if parameter. This parameter is generally not required to be changed unless you do not have IPv4 address for internal communication.

Suppose -Dcom.broadhop.q.if=eth0 and:

  • -Dcom.broadhop.q.if.ipv6=true, then:

    IPv6 address of "eth0" interface is used for ZMQ connection for internal communication between VMS within site.

  • -Dcom.broadhop.q.if.ipv6=false, then:

    IPv4 address of "eth0" interface is used for ZMQ connection for internal communication between VMS within site.

Example: -Dcom.broadhop.q.if.ipv6=true

Default: false

Possible Values: true, false

purgeUnusedQuota

When this parameter is set to true, then application removes the empty quota entries from the balance records. The quota is removed only when all the credits in that particular quota have been removed.

This parameter depends on the credits in the quota, even if the quota is not being used but credit details are still present then quota will not auto purge but wait till all the credits are removed from it. To maintain history of credits depends on 'retainCreditsDays' parameter value.

This parameter is not applicable for purging 'Recurring Quotas'.

Example: -DpurgeUnusedQuota=true

Default: false

Possible Values: true, false

PCRF_Name

For Legacy OCS server, you need to configure -DPCRF_Name in /etc/broadhop/qns.conf file. This number is used to configure the pcrf number (in Sy NDM) to be sent in SY session-id as per your requirements for legacy OCS.

Example: -DPCRF_Name=11

This configures the PCRF name to be 11.

do.service.bundling.without.profiles

Virtual service can be created with or without CRD profile.

This parameter allows the creation of virtual-services without defining CRD bundle profiles.

If the parameter is set to false which means bundle profile is required for virtual-services.

Example: -Ddo.service.bundling.without.profiles=false

Default: false

Possible Values: true, false

evaluate.session.on.service.expiration

When set to true, CPS internally triggers a session evaluation when a particular virtual-service expires. On evaluation it skips the expired virtual-service and applies new policies accordingly.

Example: -Devaluate.session.on.service.expiration=true

Default: false

Possible Values: true, false

virtualservice.optimize.crd

When set to true, CPS only loads the CRD tables that are affected by the virtual service (virtual service name and its AVPs used as keys) while evaluating each virtual service. If any other CRD tables are dependent on the results of these tables, then they too are evaluated recursively.

Example: -Dvirtualservice.optimize.crd=true

Default: false

Possible Values: true, false

enable.parallel.queries

mongo.session.query.pool.size

Queries to session database across multiple shards can now be parallel (instead of serial) thus reducing the overall time required to search a session (in case of large number of shards).

The following additional parameters are required to enable parallel session queries for LDAP server and NAP notifications:

  • enable.parallel.queries: This parameter is used to enable parallel lookup for secondary key searches.

    Example: -Denable.parallel.queries=true

    Default: false

    Possible Values: true, false

  • mongo.session.query.pool.size: This parameter is used to configure size of thread pool used to perform parallel queries for secondary keys.

    Example: -Dmongo.session.query.pool.size=10

    Default: 0

    Note

     

    If the pool size is configured as 0 (default value) then thread pool is not created and queries are not executed parallely.

Note

 

If all the pool threads (above) are busy, then the caller thread is used to perform session lookup.

db.full.scan.tps

This parameter is used to restrict the TPS of full database scans per qns process.

This parameter is optional. If this parameter is not configured in qns.conf file, default value 7 is used.

To disable the full scan restriction to configured limit, in qns.conf file, set the value to 0.

Example: -Ddb.full.scan.tps=350

Default: 7 (for HA setup); 4 (for GR setup)

com.broadhop.license.approach

This parameter is used to configure/enable CPS to use the Cisco Smart Licensing model.

Example: -Dcom.broadhop.license.approach=sl

where, sl is used for Smart Licensing.

If this parameter is not present, CPS uses the legacy SWIFT/LMGRD model. For more information, see CPS Managing CPS Licenses chapter in the CPS Operations Guide.

Default: Not present/null

Note

 

Currently, for smart license, only sl can be passed. For any other license approach, remove this parameter from qns.conf file.

com.broadhop.config.url

The URL from which to pull the policy configuration. This URL should match with the publish URL defined in Policy Builder.

Default: http://lbvip02/repos/run/

com.broadhop.repository.credentials

Username, password@hostname format is fixed and is used for SVN credential used to access the policy configuration.

Default: qns-svn/3300901EA069E81CE29D4F

77DE3C85FA@lbvip02

You can use change_passwd.sh script to change qns-svn user password after installation. However, if the changed password is not added/updated in Configuration.csv spreadsheet, the new password is overridden by the default value in Configuration.csv after running reinit.sh script as the qns-svn user takes the existing default password from Configuration.csv spreadsheet.

Note

 

User/password is set in Configuration.csv. For more information, see General Configuration section in the CPS Installation Guide for VMware.

For more information on password encryption, see System Password Encryption in the CPS Installation Guide for VMware.

com.broadhop.repository.

credentials.isEncrypted

Enables or disables encryption of the runtime repository password.

Default: true

Note

 

When -Dcom.broadhop.repository.credentials.isEncrypted=true, password value is expected be in encrypted format in com.broadhop.repository.credentials.

com.cisco.balance.compression

This parameter is used to enable or disable balance compression.

Default: true

com.cisco.balance.dbs

This parameter is used to configured the number of shards for balance database at application level.

Default: 1

retainCreditsDays

Property retainCreditsDays could be configured to control the number of days after which expired balance credits are removed. CPS calculates the age of expired credits whenever refresh happens to that quota and if age of expired credit greater than retainCreditsDays then it removes credit entry.

For example, -DretainCreditsDays=60 removes credit entry after 60 days of expiry (or later) when refresh is triggered for subscriber quota.

If the parameter is not specified, 99999 is used as default value.

Note

 

When balance services are used, it is recommended to configure retainCreditsDays to a value based on the business requirement. If retainCreditsDays is not configured, it leads to expired credits getting accumulated thereby increasing the balance record size. The increased balance record size increases the CPU load while reading and writing the balance records and thereby affecting the system performance.

dbSocketTimeout

The wait time in milliseconds for query/insert/update/delete on database, before it can be timed out.

This timeout value is used at the timeout value for all other databases unless the specific timeout parameter for the database (such as balance, CDR, and so on) is configured.

Default: 60000

Recommended: 1000

dbSocketTimeout.balance

The wait time in milliseconds for query/insert/update/delete on the balance database, before it can be timed out.

If a value for this parameter is not defined, the value of dbSocketTimeout (configured or default) is used.

Default: 60000

dbSocketTimeout.cdr

The socket timeout on the CDR database in milliseconds.

If a value for this parameter is not defined, the value of dbSocketTimeout (configured or default) is used.

Example: -DdbSocketTimeout.cdr=1000

Default: 60000

dbSocketTimeout.cdrrep

The socket timeout in milliseconds on the reporting database.

If a value for this parameter is not defined, the value of dbSocketTimeout (configured or default) is used.

Example: -DdbSocketTimeout.cdrrep=1000

Default: 60000

Note

 

dbSocketTimeout.cdrrep parameter is applicable to the process involved in participating CDR replication (reporting database) whereas dbSocketTimeout.cdr parameter is used for CDR database.

dbSocketTimeout.remoteBalance

Note

 
To be used only when configuring remote balance database access via Policy Builder.

The wait time in milliseconds for query/insert/update/delete on the balance database, before it can be timed out.

If a value for this parameter is not defined, the value of dbSocketTimeout (configured or default) is used.

Default: 60000

dbSocketTimeout.remoteSpr

Note

 
To be used only when configuring remote SPR database access via Policy Builder.

The wait time in milliseconds for query/insert/update/delete on the SPR database, before it can be timed out.

If a value for this parameter is not defined, the value of dbSocketTimeout (configured or default) is used.

Default: 60000

dbSocketTimeout.spr

Configures a separate socket timeout for the SPR MongoDB. This helps the MongoDB regex search function operate as expected for the Control Center GUI and is only viable when the SPR read preference is set to SecondaryPreferred. If the SPR read preference is set to Primary like the Session DB, then Cisco highly recommends that the dbSocketTimeout parameter is used and the same timeout is set for SPR.

If a value for this parameter is not defined, the value of dbSocketTimeout (configured or default) is used.

Default: 60000

Note

 

CPS allows you to do a regex search. By default, Disable Regex Search is checked under USuM Configuration in Policy Builder. You can uncheck this option and enable regex search through Control Center.

dbSocketTimeout.secondary_key

MongoDB socket timeout in milliseconds. This parameter is used for SK database.

Example: -DdbSocketTimeout.secondary_key=60000

Default: 1000

mongo.connections.per.host

Number of concurrent application connections allowed to the MongoDB per host (qns process). If there are three session cache, then each cache can have five connections.

If the value for this parameter is not defined, the value of mongo.connections.per.host (configured or default) is used.

Example: -Dmongo.connections.per.host=1

Default: 5

Note

 

If the value is not present in qns.conf file, the value is 100.

Note

 
In case of 4 blade setup, change the parameter value to 20; 8 blade setup = 15; multi-chassis (16 + Blades) = 5.

mongo.connections.per.host.balance

This parameter is used to specify the number of connections allowed per host (the pool size, per host) for the balance database.

If the value for this parameter is not defined, the value of mongo.connections.per.host (configured or default) is used.

Example: -Dmongo.connections.per.host.balance=10

Default: 100

Note

 
In case of 4 blade setup, change the parameter value to 20; 8 blade setup = 15; multi-chassis (16 + Blades) = 10.

mongo.connections.per.host.cdr

The number of connections on the CDR database allowed per host.

If the value for this parameter is not defined, the value of mongo.connections.per.host (configured or default) is used.

Example: -Dmongo.connections.per.host.cdr=10

Default: 10

mongo.connections.per.host.cdrrep

The number of connections on the reporting database allowed per host.

If the value for this parameter is not defined, the value of mongo.connections.per.host (configured or default) is used.

Example: -Dmongo.connections.per.host.cdrrep=10

Default: 10

Note

 

mongo.connections.per.host.cdrrep refers to both Staging database and CDR database under Policy Reporting.

If mongo.connections.per.host.cdrrep and mongo.connections.per.host.cdr are defined in the qns.conf, then cdr takes precedence over cdrrep for the CDR database.

mongo.connections.per.host.reconcile

This parameter is used to specify the number of connections allowed per host for the reconcile database.

If the value for this parameter is not defined, the value of mongo.connections.per.host (configured or default) is used.

Default: 100

Note

 
In case of 4 blade setup, change the parameter value to 20; 8 blade setup = 15; multi-chassis (16 + Blades) = 10.

mongo.connections.per.host.remoteBalance

This parameter is used to specify the number of connections allowed per host (the pool size, per host) for the remote balance database (in case of GR).

If the value for this parameter is not defined, the value of mongo.connections.per.host (configured or default) is used.

Example: -Dmongo.connections.per.host.remoteBalance=10

Default: 100

Note

 
In case of 4 blade setup, change the parameter value to 20; 8 blade setup = 15; multi-chassis (16 + Blades) = 10.

mongo.connections.per.host.remoteSpr

This parameter is used to specify the number of connections allowed per host for the remote SPR database (in case of GR).

If the value for this parameter is not defined, the value of mongo.connections.per.host (configured or default) is used.

Example: -Dmongo.connections.per.host.remoteSpr=10

Default: 100

Note

 
In case of 4 blade setup, change the parameter value to 20; 8 blade setup = 15; multi-chassis (16 + Blades) = 10.

mongo.connections.per.host.spr

This parameter is used to specify the number of connections allowed per host for the SPR database.

If the value for this parameter is not defined, the value of mongo.connections.per.host (configured or default) is used.

Example: -Dmongo.connections.per.host.spr=10

Default: 100

Note

 
In case of 4 blade setup, change the value to 20; 8 blade setup = 15; multi-chassis (16 + Blades) = 10.

mongo.threads.allowed.to.wait.

for.connection

This parameter is a multiplier for connectionsPerHost that denotes the number of threads that are allowed to wait for connections to become available if the pool is currently exhausted. If connectionsPerHost is 10, and mongo.threads.allowed.to.wait.for.connection is 5, then 50 threads can be blocked. For number of threads greater than 50, an exception is thrown.

Applicable for MongoDB connection.

Example: -Dmongo.threads.allowed.to.wait.for.connection=5

Default: 5

mongo.threads.allowed.to.wait.

for.connection.balance

This parameter is a multiplier for connectionsPerHost that denotes the number of threads that are allowed to wait for connections to become available if the pool is currently exhausted. If connectionsPerHost is 10, and mongo.threads.allowed.to.wait.for.connection.balance is 5, then 50 threads can be blocked. For number of threads greater than 50, an exception is thrown.

Applicable for balance database connection.

Example: -Dmongo.threads.allowed.to.wait.for.connection.balance=5

Default: 5

Note

 

If the value is not configured, all the database types inherit the value from mongo.threads.allowed.to.wait.for.connection parameter.

For example, if mongo.threads.allowed.to.wait.for.connection.balance is defined then this configuration overrides the generic mongo.threads.allowed.to.wait.for.connection.

mongo.threads.allowed.to.wait.

for.connection.cdr

Multiplier for connectionsPerHost for the number of threads that can be blocked. For example, if connectionsPerHost is 10, and threadsAllowedToBlockForConnectionMultiplier is 5, then 50 threads can be blocked. For number of threads greater than 50, an exception error is thrown.

Example: -Dmongo.threads.allowed.to.wait.for.connection.cdr=10

Default: 10

Note

 

If the value is not configured, all the database types inherit the value from mongo.threads.allowed.to.wait.for.connection parameter.

For example, if mongo.threads.allowed.to.wait.for.connection.cdr is defined then this configuration overrides the generic mongo.threads.allowed.to.wait.for.connection.

mongo.threads.allowed.to.wait.

for. connection.cdrrep

Multiplier for connectionsPerHost for the number of threads that can be blocked. For example, if connectionsPerHost is 10, and threadsAllowedToBlockForConnectionMultiplier is 5, then 50 threads can be blocked. For number of threads greater than 50, an exception error is thrown.

Example: -Dmongo.threads.allowed.to.wait.for.connection.cdrrep=10

Default: 10

Note

 

If the value is not configured, all the database types inherit the value from mongo.threads.allowed.to.wait.for.connection parameter.

For example, if mongo.threads.allowed.to.wait.for.connection.cdrrep is defined then this configuration overrides the generic mongo.threads.allowed.to.wait.for.connection.

mongo.threads.allowed.to.wait.for. connection.reconcile

This parameter is a multiplier for connectionsPerHost that denotes the number of threads that are allowed to wait for connections to become available if the pool is currently exhausted. If connectionsPerHost is 10, and mongo.threads.allowed.to.wait.for.connection.reconcile is 5, then 50 threads can be blocked. For number of threads greater than 50, an exception is thrown.

Example: -Dmongo.threads.allowed.to.wait.for.connection.reconcile=5

Default: 5

Note

 

If the value is not configured, all the database types inherit the value from mongo.threads.allowed.to.wait.for.connection parameter.

For example, if mongo.threads.allowed.to.wait.for.connection.reconcile is defined then this configuration overrides the generic mongo.threads.allowed.to.wait.for.connection.

mongo.threads.allowed.to.wait.for. connection.remoteBalance

This parameter is a multiplier for connectionsPerHost that denotes the number of threads that are allowed to wait for connections to become available if the pool is currently exhausted. If connectionsPerHost is 10, and mongo.threads.allowed.to.wait.for.connection.remoteBalance is 5, then 50 threads can be blocked. For number of threads greater than 50, an exception is thrown.

Applicable for remote balance database connection.

Example:

-Dmongo.threads.allowed.to.wait.for.connection.

remoteBalance=5

Default: 5

Note

 

If the value is not configured, all the database types inherit the value from mongo.threads.allowed.to.wait.for.connection parameter.

For example, if mongo.threads.allowed.to.wait.for.connection.remoteBalance is defined then this configuration overrides the generic mongo.threads.allowed.to.wait.for.connection.

mongo.threads.allowed.to.wait.

for. connection.remoteSpr

This parameter is a multiplier for connectionsPerHost that denotes the number of threads that are allowed to wait for connections to become available if the pool is currently exhausted. If connectionsPerHost is 10, and mongo.threads.allowed.to.wait.for.connection.remoteSpr is 5, then 50 threads can be blocked. For number of threads greater than 50, an exception is thrown.

Applicable for remote SPR database connection.

Example: -Dmongo.threads.allowed.to.wait.for.connection.remoteSr=5

Default: 5

Note

 

If the value is not configured, all the database types inherit the value from mongo.threads.allowed.to.wait.for.connection parameter.

For example, if mongo.threads.allowed.to.wait.for.connection.remoteSpr is defined then this configuration overrides the generic mongo.threads.allowed.to.wait.for.connection.

mongo.threads.allowed.to.wait.

for.connection.spr

This parameter is a multiplier for connectionsPerHost that denotes the number of threads that are allowed to wait for connections to become available if the pool is currently exhausted. If connectionsPerHost is 10, and mongo.threads.allowed.to.wait.for.connection.spr is 5, then 50 threads can be blocked. For number of threads greater than 50, an exception is thrown.

Applicable for SPR database connection.

Example: -Dmongo.threads.allowed.to.wait.for.connection.spr=5

Default: 5

Note

 

If the value is not configured, all the database types inherit the value from mongo.threads.allowed.to.wait.for.connection parameter.

For example, if mongo.threads.allowed.to.wait.for.connection.spr is defined then this configuration overrides the generic mongo.threads.allowed.to.wait.for.connection.

mongo.health.monitor.enabled

This parameter is used to enable MongoDB health monitor for write operations.

Example: -Dmongo.health.monitor.enabled=true

Default: false

Possible Value: true, false

mongo.health.monitor.scheduler.period

This parameter used to configure how frequently to execute the MongoDB write operation health monitor thread.

Example: -Dmongo.health.monitor.scheduler.period=3000

Default: 3000 milliseconds

mongo.monitor.write.update.threshold

This parameter is used to configure number of MongoDB write operations to be performed on the database every time the thread executes.

Example: -Dmongo.monitor.write.update.threshold=50

Default: 50

mongo.monitor.percentage.threshold

This parameter is used to calculate the success threshold percentage rate for MongoDB write operations. If success result is less than configured threshold, then only MongoDB client rest operation is triggered.

Example: -Dmongo.monitor.percentage.threshold=80

Default: 80

mongo.reset.scheduler.period

This parameter is used to configure how frequently to execute the thread for checking the reset MongoDB client connections in case of write operations are breached the failure threshold.

Example: -Dmongo.reset.scheduler.period=4000

Default: 4000 milliseconds

wait.time.after.reset

This parameter is used to configure the time that thread for resetting MongoDB client connection should wait/sleep for after connection reset.

Example: -Dwait.time.after.reset=10000

Default: 10000 milliseconds

mongo.reset.retry.counter

This parameter is used to configure maximum retry attempts for resetting MongoDB client connections in case of previous reset failure.

Example: -Dmongo.reset.retry.counter=2

Default: 2

apirouterContextPath

api.ua.context.path

ua.context.path

This parameter is checked if apirouter.disable.qnscnf.validation is set false.

Some customer may have configured the URL at multiple places and do not want to change URL. To change the endpoint so that the API router uses /ua/soap, add the following parameters in /etc/broadhop/qns.conf file. This makes API router act as unified API.


-DapirouterContextPath=/apirouter
-Dapi.ua.context.path=/ua/soap
-Dua.context.path=/ua/soap

Note

 

The api.ua.context.path and ua.context.path parameters must be the same.

New URLs are as follows:

  • For HA:

    • Unified API: https://lbvip01:8443/ua/soap

    • API Router: https://lbvip01:8443/apirouter

networkguard.tcp.local

This enables the option to choose an explicit interface to handle the diameter processing on Policy Director (LB) VMs. This parameter is used to bring up the Diameter stack for the Diameter process on Director (LB) VMs.

Note

 

This configuration can be used for IPv4 HAProxy connections.

Default: eth0

networkguard.tcp.local.ipv6

This enables the option to choose an explicit interface to handle the diameter processing on Policy Director (LB) VMs. This parameter is used to bring up the Diameter stack for the Diameter process on Director (LB) VMs.

Note

 

This configuration can be used for IPv6 HAProxy connections.

Example: -Dnetworkguard.tcp.local.ipv6=true

Default: false

Possible Values: true, false

diameter.default.timeout.ms

Defines the end to end timeout in milliseconds for diameter messages.

For example, a CCRi received at load balancer (Policy Director) and CCAi has to be sent by 1500 ms otherwise the message is marked as timed out.

This default setting is used only if the Action Timer (Ms) parameter is not set under Diameter Configuration > Message Timeouts and Retry Configuration in Policy Builder.

Default: 3000

disableCdrReplication

This parameter is used to specify whether the process should participate in doing CDR replication or not.

  • If disableCdrReplication is set to true (as disableCdrReplication=true), then the processes using corresponding configuration file does not participate in CDR replication.

  • If disableCdrReplication is set to false (as disableCdrReplication=false), then the processes using corresponding configuration file participates in CDR replication.

  • If disableCdrReplication is not specified, then disableCdrReplication=false is used as default and corresponding behavior is applicable.

By default, this parameter is set as false.

enableRedisReporting

This parameter helps the application to decide whether to use Redis or not, to store the generated reporting data.

This parameter needs to be added in /etc/broadhop/qns.conf file. If this parameter is set to true, then application uses the Redis to store the generated reporting data. If the parameter is set to false, then MongoDB is used to store the generated reporting data.

This parameter needs to be added on each Policy Server (qns) node and Policy Director (lbs).

Example: -DenableRedisReporting=true

Default: false

Possible Values: true, false

dbPassword

This parameter is used to enable authentication for MongoDB.

Example: -DdbPassword=XXXX

where, XXXX is encrypted admin database user's password for application.

The following command is used to generate encrypted password from Cluster Manager: /var/qps/bin/support/mongo/encrypt_passwd.sh <Password>. For more information, refer to MongoDB Authentication section in the CPS Installation Guide for VMware.

Also, if you modify/remove above parameter then you have to restart the application.

This encrypted password for admin user is applicable only when db_authentication_enabled is set to TRUE.

Note

 

No need for user name, By default, the username is admin.

If MongoDB authentication is not enabled, then password is not required.

Caution

 

Updating this parameter requires (-DdbPassword=XXXX) downtime, i.e.,

  • Enable authentication

  • Disable authentication

  • Change password

com.broadhop.andsfurl.enable

No longer used.

useVipInsteadOfHostnameForTrap

This parameter contain list of interface names with VIP name separated by comma. When this parameter is configured, CPS uses VIP name instead of local VM hostname in trap key and event host.

Example:

-DuseVipInsteadOfHostnameForTrap=Gx:

diameter-int1-vip,Sy:diameter-int2-vip

useDiameterPeerIpForTrap

This parameter can be used to include PeerIP in "diameter peer down" alarm message and key. When set to true, peer IP is included.

Example: -DuseDiameterPeerIpForTrap=true

Default: false

Possible Values: true, false

useDiameterInterfaceForTrap

This parameter can be used to include interface name in "diameter peer down" alarm message and key. When set to true, the interface name is included.

Example: -DuseDiameterInterfaceForTrap=true

Default: false

Possible Values: true, false

use.ldap.vs.evaluation.order

When set to true, this parameter enables the processing of a set of LDAP attributes and its corresponding Sy virtual-service consecutively in the order they were received by CPS.

If this parameter is not added in qns.conf file, then by default this parameter is set to true.

Example: -Duse.ldap.vs.evaluation.order=true

Possible Values: true, false

jdiameter.accept.unknown_desthost

This parameter is used to enable the processing of a request message received by CPS with an unknown Destination-Host.

Example: -Djdiameter.accept.unknown_desthost=true

Default: false

Possible Values: true, false

jdiameter.replace.unknown_desthost

This parameter is used to enable CPS to replace the unknown Destination-Host received in the message with its own advertised FQDN.

Example: -Djdiameter.replace.unknown_desthost=true

Default: false

Possible Values: true, false

Note

 

This parameter applies only when -Djdiameter.accept.unknown_desthost is set to true.

message.buffer.early.processing.time

The parameter can be configured in /etc/broadhop/diameter_endpoint/qns.conf file.

This parameter is used to configure the time in milliseconds for early processing of the buffered messages if only one message is buffered or if there are no holes in the buffered messages.

This value must always be less than the Buffer Timeout In Milliseconds defined in Policy Builder under Diameter Configuration > Message Buffering Configuration.

Example: -Dmessage.buffer.early.processing.time=10

Default: 5 ms

tcp.hold.timer.after.dpr

The parameter is used to indicate the amount of time (ms) the TCP connection is held towards all the peers after sending/receiving DPR.

Example: -Dtcp.hold.timer.after.dpr=2500

Default: 2000 ms

Possible Range: 1 - 3000 ms

Note

 

During the upgrade, CPS shutdowns the Diameter stack (parallel shutdown should be enabled -Dstack.parallel.shutdown=true) and sends DPR to all the peers. The diameter connection is held for the configured time so that inflight messages (messages already in queue) is processed by CPS and response is sent.

  • Policy Directors in the cluster is triggered by the upgrade to send a DPR to all diameter peers.

  • The peer sends DPA in response and then stops sending new requests to the cluster.

  • All in-flight messages are processed by the cluster and the answers sent back to the peer.

  • The peer continues to accept answers from the cluster until the connection is terminated. This allows the peer to process in-flight messages before closing the TCP connection. No new messages are sent to CPS.

    • This allows cluster-by-cluster upgrades. This eliminates the need to manually re-configure DRA for each cluster.

Restriction

 

The in-flight messages are only processed for the duration of TCP connection hold timer. The processing stops on TCP expiry hold timer or DRA timer. It is recommended to configure hold time within 3 seconds.

Also, Policy Director (LB)/DRA drops the messages if the response is not received within message SLA time.

gx.rulebasenames.delimiter

This parameter is used to specify the delimiter with which to separate multiple rule base names in Gx session field.

This parameter can be added in /etc/broadhop/pcrf/qns.conf file.

Example: -Dgx.rulebasenames.delimiter=","

Default: ","

Possible Values: String values

session.db.init.1

session.db.init.2

This parameter is used to create the entry in shards/sk_shards collection in sharding database for HA setup which is used to store secondary keys.

By default, there are two members for a set of ring, where session.db.init.1 is mapped to sessionmgr01 and session.db.init.2 is mapped to sessionmgr02.

To change the mapping, you need to configure the values in qns.conf file.

Example:

-Dsession.db.init.1=sessionmgr03
-Dsession.db.init.2=sessionmgr04

sendErrorOnSession

CreateNotAllowed

When set to true, creation of the sessions is not allowed in CPS. Instead, the application sends the error response for Diameter Gx request messages that are received after session limit is breached.

Example:

-DsendErrorOnSessionCreateNotAllowed=false

Default: false

Possible Values: true, false

diameter.resultCode

OnSessionCreateNotAllowed

This parameter is used to configure the diameter result-code to be sent for the error response when session creation is not allowed.

This paramater must be combined with parameter -DsendErrorOnSessionCreateNotAllowed=true.

Example:

-Ddiameter.resultCodeOnSessionCreateNotAllowed=5012

Default: 5012

StaleSession.SupportedErrorCodes

When a session is successfully processed during RAR, session expiration time (expiryDate in session data) is immediately incremented irrespective of whether there is a RAA with error or there is no RAA from the peer. This parameter controls the behavior of incrementing session expiryDate in case there is a RAR failure. When configured with error codes, older expiryDate is retained for RAR failures for those errors.

Semi-colon ";" separated list of RAR error codes must be configured to enable this feature for specific error codes.

Example: To enable cleanup for Timeouts and Diameter-Too-busy, configure

-DStaleSession.SupportedErrorCodes=7000;3004 in /etc/broadhop/qns.conf file.

Default: By default, if the parameter is not configured, previous behavior of clean-up based on 5002 and 5012 error codes is supported.

remoteSprCleanupEnabled

This parameter is used to enable/disable remote SPR (subscriber records located on remote SPR Mongo databases) cleanup feature.

Example: -DremoteSprCleanupEnabled=true

Default: true

Possible Values: true, false

The following parameters are also required to run the remoteSprCleanup feature:

  • -Dignore.db.unavailable=true

  • -DsprLocalGeoSiteTag=[siteId]

Note

 

This parameter must be set to true only when Single Sh feature is used in CPS and SPR database is stored as a caching mechanism to store profile information.

remoteSprDeleteFrequency

This parameter is used to configure the interval in milliseconds before the subscriberCleanup database is queried and deletes are executed on the Remote SPR database cross-site.

Example: -DremoteSprDeleteFrequency=5000

Default: 5000 milliseconds

remoteSprCleanupTimeToLive

This parameter is used to configure Time to Live for records held in subscriberCleanup database.

Example: -DremoteSprCleanupTimeToLive=84600

Default: 84600 (1 day)

sprCleanupQueueSize

This parameter is used to configure the size of locally stored queue holding subscriber details before writing to subscriber cleanup database.

Example: -DsprCleanupQueueSize=10000

Default: 10000

sprCleanupQueueDrainAmount

This parameter is used to configure in memory queue record count to be drained at one time.

Example: -DsprCleanupQueueDrainAmount=1000

Default: 1000

subscriberCleanupFetchAmount

This parameter is used to configure the batch size of the records grabbed from subscriberCleanup database.

Example: -DsubscriberCleanupFetchAmount=1000

Default: 1000

force.SySTR.onCCRT

When Single Sy feature is enabled and force.SySTR.onCCRT boolean parameter is set true in qns.conf, a Sy STR message is sent towards OCS on receiving the CCR-T for the last Gx session irrespective of whether a Sy SLA was received or a delayed Sy SLA was sent from OCS towards PCRF.

Example: -Dforce.SySTR.onCCRT=true

Default: false

Possible Values: true, false

isSingleSy

This boolean parameter is used to enable Single Sy feature in PCRF.

Example: -DisSingleSy=true

Default: false

Possible Values: true, false

singleSyPrimaryKey

The value for this parameter determines if we load SingleSySession based on imsi or msisdn of the parent GxSession as its primary key.

Example: -DsingleSyPrimaryKey=msisdn

Default: msisdn

Possible Values: imsi, msisdn

sk.db.init.1

Default SK DB shard member1 of the MongoDB replica.

Example: -Dsk.db.init.1=sessionmgr01

Default: sessionmgr01

Possible Value: hostname

sk.db.init.2

Default SK DB shard member2 of the MongoDB replica.

Example: -Dsk.db.init.2=sessionmgr02

Default: sessionmgr02

Possible Value: hostname

sk.db.init.port

Default SK database shard port number.

Example: -Dsk.db.init.port=27717

Default: 27717

Possible Value: port number

sk.db.skipRemote

This parameter is used to skip the remote SKDB queries if local SKDB queries fails.

Example: -Dsk.db.skipRemote=false

Default: false

Possible Value: true, false

sk.db.skipRemotePrimary

This parameter is used to skip the remote SKDB primary preferred query if secondary preferred query fails.

Example: -Dsk.db.skipRemotePrimary=false

Default: false

Possible Value: true, false

sk.db.skipPrimary

When Secondary Key (SK) in Rx session is trying to attach with Gx session, the key is checked-in Secondary DB in the replica set and then to Primary DB.

If this parameter set to true, primary DB look-up is skipped.

Example: -Dsk.db.skipPrimary=false

Default: false

Possible Value: true, false

diameter.errorOnSaveFailure

This parameter is used when SK database or session database writes fails.

If this parameter is configured “true”, then the diameter request is responded with diameter error response for Gx and Rx messages. If this parameter is configured “false”, then the diameter request is dropped and no error response is sent.

Example: -Ddiameter.errorOnSaveFailure=false

Default: false

Possible Value: true, false

diameter.resultCode

OnSessionFailure

This parameter is used to configure error-code to be returned when SK database or Session database write fails and diameter.errorOnSaveFailure is set to true.

If SK database or Session database writes fail and diameter.errorOnSaveFailure is set to false or not configured, the diameter error 3004 is sent.

Example: -Ddiameter.resultCodeOnSessionFailure=3004

Default: 3004

Possible Value: 3001 to 5999

allow.sessioncreation.

license.periodic.check

The value must be set to true so that the license is validated periodically but session creation will not be impacted.

Note

 

Only during the start/restart of Policy Server (QNS) process, licenses validation failure impacts the traffic and sessions creations are not allowed.

Example: -Dallow.sessioncreation.license.periodic.check=false

Default: false

Possible Value: true, false

license.checkInterval

This parameter is used to configure the time period (in seconds) after which the license manager validates the license.

When session count exceeds license count, LicenseManagerProxy generates LicenseState.RATE_LIMITED. Diagnostics reports “CRITICAL” status.

Default: 90 seconds

This property is read at the time of service initialization only.

skipUnreachableShards

The value must be set to true so that the alarms are generated:

  • When the shards collection in the ADMIN replica-set > sharding database is missing entries for the shards in a HA/GR environment

  • When a shard is created and an entry exists in the sharding database of the ADMIN replica-set, but Session Manager VM is not reachable

  • When indexes are missing on collections existing on SPR/Session database

Example: -DskipUnreachableShards=true

Default: false

Possible Value: true, false

skipRemoteShardLookup

When this parameter is set to true, it forces application to lookup in local session shards only (shards belonging to local site), and skip to lookup in remote session shards (shards belonging to other site).

Example: -DskipRemoteShardLookup=true

Default: false

Possible Value: true, false

fwdGxRAASyPSTA

This parameter is used to forward the success Gx-RAA and SY-prime STA to QNS instance from Policy Director (LB) nodes to QNS instance running on Policy Server (QNS) VMs. This is useful to log response details in Engine logs generated from QNS instances.

If the parameter is set to false, the success Gx-RAA and SY-prime STA gets handled only in Policy Director (LB) diameter nodes.

Example: -DfwdGxRAASyPSTA=true

Default: false

Possible Value: true, false

isMultiStackEnabled

If you configure multiple Diameter Stacks for different application interfaces (for example, Gx, Rx, Sy) in Policy Builder, then the property isMultiStackEnabled must be set to true in qns.conf file.

When set to true, CPS identifies the corresponding interface stack realm peers to process the corresponding interface inbound and outbound messages.

When set to false, CPS cannot identify the corresponding peer and drop the message at Policy Director (LB) itself saying Peer is null.

Example: -isMultiStackEnabled=true

Default: false

Possible Value: true, false

maxRetryMongoExceptionAttempts

This parameter is used to configure the Max Retry Attempts which MongoDB Client/CPS should do if MongoDB exception is being caught during the rebalance command.

Example: -DmaxRetryMongoExceptionAttempts=3

Default: 3

Value Range: 3 - 10

mail.socket.timeout

Inactivity period for a socket after which it is closed.

Example: -Dmail.socket.timeout=30000

Default: 30000 milliseconds

mail.socket.connection.timeout

Timeout for connection to be established between CPS and SMTP server.

Example: -Dmail.socket.connection.timeout=5000

Default: 5000 milliseconds

sms.response.timeout

Time period CPS should wait for the response from SMPP server.

Example: -Dsms.response.timeout=2000

Default: 2000 milliseconds

enable.memcache.on.tcp

When this parameter is enabled (set to true), memcache is done using TCP sockets over default UDP sockets.

Example: -Denable.memcache.on.tcp=true

Default: false

Possible Values: true, false

appInstanceIdListCapacity

Used to decide the capacity of the AppInstanceIdList. The AppInstanceIdList contains the AppInstanceIds that are present in the subscriber session.

  • If the parameter value is configured <=0, then the list size is set to 10

  • If the parameter value is configured > short.MAX_VALUE (32767), then the list size is set to 32766.

  • If the parameter is not configured, the list size is set to the default value of 10.

For new subscriber session records, the AppInstanceIdList will not grow beyond beyond the configured value for the AppInstanceIdList. CPS maintains only the latest AppInstanceIds in the list according to the list size capacity that is set in the configuration. Older entries are removed/ignored.

Example: -DappInstanceIdListCapacity=100

Default: 10

ldap.profile.overload.

refreshtime.mins

This parameter is used to specify the LDAP provide overload refresh time.

Note

 

LDAP plugin residing on IO manager notifies the overload condition in blank LDAP response. LDAP plugin runs on Policy Server (QNS) does not retry LDAP query in overload condition, however, it sets next profile refresh time to be 30 minutes default.

Example: -Dldap.profile.overload.refreshtime.mins=30

Default: 30 minutes

enable.send.receive.queue.ttl

This parameter enables support for TTL based queues for processing diameter messages.

Example: -Denable.send.receive.queue.ttl=true

Default: false

Possible Values: true, false

receive.peer.queue.ttl.ms

This parameter is used to specify maximum duration (in millisecond) an inbound diameter message is stored before being discarded.

Example: -Dreceive.peer.queue.ttl.mss=5

Default: 20

Possible Value: integer greater than 0

send.peer.queue.ttl.ms

This parameter is used to specify maximum duration (in millisecond) an outbound diameter message is stored before being discarded.

Example: -Dsend.peer.queue.ttl.ms=5

Default: 20

Possible Value: integer greater than 0

max.discard.tps

This parameter is used to specify maximum rate of diameter messages discarded before disconnecting with peer.

Example: -Dmax.discard.tps=200

Default: 400

Possible Value: integer greater than 0

max.tag.size

Determines the size (number of characters) of each individual tag in the tag list. When configured, all the tags in the tag list are of the same size. This is a one-time configuration and user must choose the value for this parameter.

The value configured here must be greater than max tag size observed in the system.

Example: -Dmax.tag.size=120

Default: 150

Possible Range: 100 to 300

Note

 

If the value is not configured and the Session Tag Padding Configuration is enabled (set to true) in Policy Builder, the default value of 150 is used.

tag.padding.char

This parameter is used to define the padding character to be used for tags and reserved tags. The value configured for this parameter is only applicable when the Tag padding feature is enabled.

When feature is enabled but not configured, default value # is used.

You must make sure that the character decided for padding is not part of any secondary key.

Example: -Dtag.padding.char=$

Default: #

Warning

 

This is a one time configuration and changing it requires you to execute a procedure. For more information on the procedure, contact your Cisco Account representative.

enable.primary.parallel.queries

Enable parallel query operation on primary members of SK DB replica-sets on local and remote sites.

To enable the parallel query the following configuration must be in qns.conf file.

Example: -Denable.primary.parallel.queries =true

Default: false

Possible Values: true, false

mongo.skdb.query.pool.size

Defines the executer thread pool size. If you have a thread pool size of 6 then at a time maximum 6 threads can be invoked.

Default value is 0 and if it is defined as 0 then the parallel queries do not occur.

Recommended value for this parameter is 2.

Example: -Dmongo.skdb.query.pool.size=6

mongo.skdb.query.thread.pool.queue.size

Provides the queue size for threads which are working on the SK DB parallel query.

When you have to configure the thread pool queue size as 20 then the qns.conf file configuration must be as follows:

-Dmongo.skdb.query.thread.pool.queue.size=20

Default: 10

Recommended value for this parameter is 4.

cisco.cdr.scheduler.intervalMs

The interval at which the scheduler thread processes the reporting data and inserts them to database.

Example: -Dcisco.cdr.scheduler.intervalMs=10

Default: 10 ms

It is recommended to leave the scheduler interval at default.

Range: 10 ms to 100 ms

Maximum CDR insert rate per QNS = batchSize*1000/ cisco.cdr.scheduler.intervalMs

replicationDelayMs

Delay in milliseconds to read CDR from MongoDB and convert them to CSV files. Utilized in offsetting time sync issues between nodes.

The system tuning parameter is an added measure in rare conditions of clocks going out of sync (since the nodes in the clusters are expected to be in sync) and read write occurs at the same time.

2000 ms must handle smaller clock shifts in such rare scenarios.

Example: -DreplicationDelayMs=1000

Default: 0

Possible Range: 0 to 5000

useMongoCLI

Note

 

This parameter needs to be configured when MongoDB is enabled on the setup.

When set to true, CRD export/import calls MongoDB CLI command to export/import CRD data.

When set to false, CRD uses existing export/import logic.

Note

 

Import All CRD Fallback Enhancements does not work when useMongoCLI parameter is set to true in qns.conf file.

Import All CRD Fallback Enhancements: CPS supports backing up of the existing CRD data and push it to SVN location(s). This backup can be used to restore cust_ref_data in case of error scenario(s) after import all. This enhancement alerts the user about the system state and if the system state is in BAD state, then user has to restore cust_ref_data with old and working CRD by using import all API.

Example: -DuseMongoCLI=true

Default: false

Possible Values: true, false

crd.mongo.credentials

If MongoDB authentication is enabled, configure crd.mongo.credentials along with useMongoCLI in qns.conf file.

Use encrypted password for admin user (refer MongoDB Authenticaton section in the CPS Installation Guide for VMware)

<username> username for authentication
<password> password for authentication
<database-name> Authentication Database Name

Example: -Dcrd.mongo.credentials=admin/

3300901EA069E81CE29D4F77DE3C85FA@admin

realtimeNotification.socketTimeout

This parameter is used to configure socket timeout (in milliseconds) of httpclient for realtime notifications to an external http or https server.

Example: -DrealtimeNotification.socketTimeout=1000

Default: 1000 ms

useRealmAndAppIdAsKey

This parameter should be configured to stop the 3002 – DiameterAllPeersDown alarms generated every 5 minutes.

Example: -DuseRealmAndAppIdAsKey=true

Default: false

Possible Values: true, false

useRealmAndHostAsKey

This parameter should be configured to stop the 3001 – DiameterPeersDown alarms generated every 5 minutes.

Example: -DuseRealmAndHostAsKey=true

Default: false

Possible Values: true, false

udc.msisdn.digit

This parameter should be configured to set 15 and 11 Digit MSISDN, which is sent as part of the Gx session initiation request. By configuring this parameter:

  • QNS sends 10 digit MSISDN to UDC.

  • Country code is removed in QNS and only 10 digit MSISDN session is stored.

  • The removed country code is stored as prefix.

filterOutDisconnectedPeers

This parameter should be configured to filter out disconnected peers.

By enabling this parameter, DOWN status messages are filtered out. show_peers.py displays only the peers currently connected to CPS.

Example: -DfilterOutDisconnectedPeers=true

Default: false

Possible Values: true, false

postgreDriver

This parameter is used to specify the postgresql driver to be used for replication to database.

Configuration is applicable only for processes that have com.broadhop.policyintel.service.feature installed and are participating in database replication. It does not have any effect for other processes.

oracleDriver

This parameter is used to specify the oracle driver to be used for replication to database.

Configuration is applicable only for processes that have com.broadhop.policyintel.service.feature installed and are participating in database replication. It does not have any effect for other processes.

send.Rx.ASR.For.AdditionalErrorCodes

This parameter is used to trigger Rx-ASR for error codes such as 3004, 3002, 5002. 3004. This is by default supported in the already released version, even if the configuration is not enabled explicitly.

node[x].actions.send.reinit.diameter_Sy_SLR.qns_stat.error

Erred actions count, for reinitiated SLR messages.

node[x].actions.send.reinit.diameter_Sy_SLR.qns_stat.success

Success actions count, for reinitiated SLR messages.

node[x].actions.send.reinit.diameter_Sy_SLR.qns_stat.total_time_in_ms

Total milliseconds of successful actions, for reinitiated SLR messages.

node[x].actions.send.reinit.diameter_Sy_SLR.qns_stat.avg

Rolling five minutes average of successful executed actions, for reinitiated SLR messages.

node[x].actions.send.diameter_Sy_SLR.qns_stat.error

Erred actions count, for non-reinitiated SLR messages.

node[x].actions.send.diameter_Sy_SLR.qns_stat.success

Success actions count, for non-reinitiated SLR messages.

node[x].actions.send.diameter_Sy_SLR.qns_stat.total_time_in_ms

Total milliseconds of successful actions, for non-reinitiated SLR messages.

node[x].actions.send.diameter_Sy_SLR. qns_stat.avg

Rolling five minutes average of successful executed actions, for non-reinitiated SLR messages.

node[x].counters.Sy_Action_Reinitiate.qns_count

When congestion handling feature is enabled, the counter can also be considered as messages submitted to Re-initiation queue.

pb.conf

The following table lists parameters in the /etc/broadhop/pb/pb.conf file.

Table 2. pb.conf Parameters

Parameters

Description

showUseCaseInitiatorTabFirst

Indicates the order of tabs in a use case template. When set to true the tabs are displayed in reverse order as follows:

Use Case Initiators > Actions > Documentation

When set to false the tabs are displayed in original order as follows:

Use Case Template > Use Case Initiators > Documentation

Example: –DshowUseCaseInitiatorTabFirst=true

Default: true

Possible Values: true, false

pb.user.session.limit

Indicates the number of sessions allowed per user.

Example: -Dpb.user.session.limit=10

Default: 0 (means unlimited sessions are allowed)

forceCredentials

This flag is used to force the login security feature. When -DforceCredentials=true is added in pb.conf file, Policy Builder login panel is presented and user is required to login Policy Builder with valid user credentials.

By default, forceCredentials is configured to be true in pb.conf file.

Example: -DforceCredentials=true

Default: false

Possible Values: true, false

authReposURL

This flag is used to Repository URL.

Default: http://lbvip02/repos

Example: -DauthReposURL=http://lbvip02/repos

Possible value: any valid SVN URL

api.repository.disableAuthorization

Policy Builder API supports to enable/disable authorization functionality by configuring the flag api.repository.disableAuthorization in /etc/broadhop/pb/pb.conf file.

By default, authorization support is enabled in API.

Example: -Dapi.repository.disableAuthorization=false

Default: false

Possible Values: true, false

pb.readOnly.showPolicies

This parameter is used to display Policies tab to read only users.

When enabled the Policies tab is visible to read only users.

Note

 

This flag only takes effect when checkbox under Tools > Preferences is checked.

showWPSGUI

When set to true, the UI fields corresponding to WPS feature on Policy Builder are visible.

Example: -DshowWPSGUI=true

Default: false

Possible Values: true, false

Note

 

It is recommended to set the value in /etc/broadhop/pb.conf in the Installer or Cluster Manager for this value to be persistent between upgrades.

Performance Tuning Parameters

Threading Configuration

A threading configuration plug-in is provided for advanced users.

If you are planning to run the system with higher TPS then you need to configure Threading Configuration. For further information contact your Cisco Technical Representative.

An example configuration is shown below:
Figure 1. Threading Configuration


Parameter

Description

Thread Pool Name

Name of the Cisco thread pool. Examples include default.

Threads

Threads to set in the thread pool. You can set Rules Thread to 50/100 depending on call flow (based on number of lookup and per transaction round trip time).

  • rules = 50; Queue Size = 0; Scale By Cpu Core = unchecked

  • rules = 100; Queue Size = 0 (If TPS is > 2000 per Policy Server (QNS) depending on call model used e.g. if LDAP is enabled); Scale By Cpu core = unchecked

Queue Size

Size of the queue before they are rejected.

Scale By Cpu Core

Select this check box to scale the maximum number of threads by the processor cores.

Notification Configuration

CPS supports configurable parameters for email socket timeout and socket connection timeout. Also for SMS smsResponsetimeout indicating how long we wait for the response from SMPP server is supported.

The following parameters can be added in /etc/broadhop/iomanager01/qns.conf and /etc/broadhop/iomanager02/qns.conf files:

  • mail.socket.timeout

    Inactivity period for a socket after which it is closed.

    Default value 30000 ms

  • mail.socket.connection.timeout

    Timeout for connection to be established between CPS and SMTP server.

    Default value 5000 ms

  • sms.response.timeout

    How long CPS should wait for the response from SMPP server.

    Default value 2000 ms

    For higher TPS notification testing tune the above mentioned parameters as well as Queue Size and processing threads in System > AsyncThreading Configuration in PB. An example is shown below:

    Figure 2. Async Threading Configuration


    You can increase the Queue Size and processing threads for the following actions as shown in above example.

  • com.broadhop.notifications.actions.ISendEmailNotificationRequest
  • com.broadhop.notifications.actions.ISendSMSNotificationRequest

Configuring Read Operations to Use Secondary DBs

Procedure


Step 1

In Policy Builder navigate to the system cluster or instance. Expand the Plug-in Configurations node then click Custom Reference Data Configuration.



Step 2

Set Db Read Preference to SecondaryPreferred.

This parameter determines how sessionmgr clients route read operations to members of a replica set.

For more information refer to http//docs.mongodb.org/manual/core/read-preference/.

Step 3

Save your changes and then Publish to Runtime Environment.


Reducing the Log Level Verbosity

By default, logging level for HA deployments is set to the ‘warn’ level.

To reduce/change the root log level:

Procedure


Step 1

On the Cluster Manager VM edit /etc/broadhop/logback.xml file.

Step 2

Change the <root level=’ ’> element to one of the other values in the following table. The default HA level warn is shown here:

<!-- Configure default Loggers -->
<root level="warn">		  
<appender-ref ref="FILE" />		  
 <appender-ref ref="SOCKET" />		  
</root>

These log levels are in order of verbosity.

Caution

 

Do not set the root log level to anything higher than ‘warn’ in a production system. If needed adjust the individual loggers listed in logback.xml file.

All

Equivalent to Trace and some more messages.

Trace

Trace Debug Info Warn & Error

Debug

Debug Info Warn &Error

Info

Info Warn & Error

Warn

Warn & Error

Error

Error

Off

-

Step 3

Save your changes to logback.xml. No service restart is needed.

Note

 

It is recommend to restart the CPS services only during a MW (Maintenance Window).

Step 4

After modifying the qns.conf file to make the changes permanent for future use (when any VM is redeployed or restarted... and so on) user needs to rebuild etc.tar.gz by executing the following command:

/var/qps/install/current/scripts/build/build_etc.sh

Step 5

In Cluster Manager execute the following command to synchronize the changes to the VM nodes:

SSHUSER_PREFERROOT=true copytoall.sh /var/qps/install/current/config/mobile/etc/broadhop/logback.xml /var/qps/install/current/config/mobile/etc/broadhop/logback.xml