vDRA Advanced Tuning

The configuration values in this document are based on the type and size of DRA deployment.

The deployment can be categorized into two sizes:

  • Small Deployment - 2 Directors and 4 workers

  • Large Deployment - 8 directors and 10 workers


Note

Recommended values are based on:

  • Local Latency:

    • 20 ms for small deployments

    • 25 ms on large deployments

  • Remote Latency:

    • 55 ms for small deployments

    • 50 ms for large deployments

In case the latency changes to a higher value, recommended values for all the configurations highlighted in this document needs to be re-characterized again.


Threading Configuration

Thread pool configurations are applicable to java processes that run-in diameter-endpoint-s1xx on Director VM and binding-s1xx container on Worker VMs in DRA.

For more information on Threading Configuration, refer to the CPS vDRA Configuration Guide.

Table 1. Thread Pool Names

Thread Pool Name

Description

bindings

This thread pool is used for IMSI_APN/MSISDN_APN AAR lookup (MOG) and binding audit updates.

bindings.lookup

This thread pool is used only if appsharding.reader thread pool is overloaded. This thread pool is applicable only for AAR VoLTE calls.

bindings.delete

This thread pool is used to query session database and enqueue session and all the binding for deletion.

bindings.response

This thread pool is used to receive database storage response and forwards it as bind store response. This is applicable for CCR-I requests.

msgtimeouts

This thread pool is used to process timed out requests.

qprocessor

This thread pool is used to process inter director Diameter messages and offload the message to senders queue.

receivers

This thread pool is used to receive and process all incoming diameter messages from the diameter stack.

senders

This thread pool is used to write messages on the specific TCP connection.

localcpPublishers

This thread pool is used to publish messages to local control plane.

globalcpPublishers

This thread pool is used to publish messages to global control plane.

cpSubscriberWorker

This thread pool is used to process messages received on local and global control plane.

pcrfQuery

This thread pool is used for PCRF session queries used only for Rx AAR VoLTE calls.

stackStopHandler

This thread pool is used to gracefully disconnect diameter peers on process shutdown.

appsharding.reader

This thread pool is specific to Rx AAR VoLTE IPv6 binding lookup and processing. This thread pool is created for each shard.

The following tables lists recommended values when single DRA installaiton TPS is above 200 K.


Important

The highlighted values must be explicitly configured.


Table 2. Recommended Values

Thread Pool Name

Default Values

Recommended Values

Threads

Queue Size

Threads

Queue Size

bindings

30

1000

60

10000

bindings.

lookup

10

1000

10

1000

bindings.

delete

10

1000

30

10000

bindings.

response

10

1000

10

1000

msgtimeouts

3

1000

3

1000

qprocessor

30

5000

30

5000

receivers

40

5000

40

5000

senders

40

5000

40

5000

localcpPublishers

15

2000

15

2000

globalcpPublishers

40

3000

40

3000

cpSubscriberWorker

30

10000

30

10000

pcrfQuery

20

400

20

400

stackStopHandler

50

0

50

0

appsharding.

reader

1

1000

2

1000

Database Capacity


Note

Rated database capacity has been arrived at after performing capacity tests.


The following table lists the database capacity for small and large deployments.

Table 3. Database Capacity

Deployment

Cluster

No. of Primary Shards (dual DB enabled)

Network Latency (in ms)

Database Capacity (in k)

Database Capacity Per Shard

85% Threshold Value

Small Deployment

Session_IPv6

8

20

30

30000/8 = 3750

3200

IMSI_MSISDN

4

55

15

15000/4 = 3750

3200

Large Deployment

Session_IPv6

48

25

180

180000/48 = 3750

3200

IMSI_MSISDN

48

50

145

145000/48 = 3020

2600

The following is the test call model used to determine the capacity for each cluster:

  1. CCR_I, CCR_T and AAR call model for Session-IPv6 database cluster capacity.

  2. CCR-I and CCR_T call model for IMSI-APN/MSISDN-APN database cluster capacity.

  3. Database capacity is based on network latency mentioned in the Table 1. If network latency is changed to higher value, then database capacity needs to be re-characterized.

Database Alert Expressions

Database alerts refer to alerts that can be configured to be triggered if the capacity of the database exceeds beyond a certain threshold.

IMSI_MSISDN Cluster

alert rule DRA_IMSI_MSISDN_DB_TPS_EXCEEDED

expression "sum(rate(mongo_operation_total{state='primary',type='mongo',op=~'update|query|delete',cluster='IMSI_MSISDN'}[5m])) > (3200 * sum (mongo_node_state_primary {cluster='IMSI_MSISDN',type='mongo'}))"

event-host-label instance

message "{{ $labels.instance }} Persistence DB TPS exceeded , current value is {{ $value }} !"

snmp-severity critical

snmp-clear-message "{{ $labels.instance }} Persistence DB TPS in control, current value is {{ $value }} !“

Session_IPv6 Cluster

alert rule DRA_SESS_IPV6_DB_TPS_EXCEEDED

expression "sum(rate(mongo_operation_total{state='primary',type='mongo',op=~'update|query|delete',cluster=~'SES_IPV6_.*'}[5m])) > (3200 * sum(mongo_node_state_primary{cluster=~'SES_IPV6_.*',type='mongo'}))"

event-host-label instance

message "{{ $labels.instance }} Persistence DB TPS exceeded , current value is {{ $value }} !"

snmp-severity critical

snmp-clear-message "{{ $labels.instance }} Persistence DB TPS in control, current value is {{ $value }} !"

Database Connection Settings

The following configurations vary based on deployment size (Small or Large) and should be configured accordingly. The worker VM java processes connect to the databases and create two database connection pools based on the database operation:

  • Create/Update, and Delete

  • Read

For more information on configuration syntax and examples, refer to the CPS vDRA Operations Guide.

binding db-connection-settings

The recommended values listed in the table are for write operations (Create/Update, Delete):


Important

The highlighted values must be explicitly configured.


Table 4. Recommended Value for Write Operations

Deployment

Bindings

connection-per-host

Default Values

Recommended Values

Small Deployment

drasession

10

14

ipv6

10

10

imsiapn

10

35

msisdnapn

10

10

ipv4

10

10

Large Deployment

drasession

10

10

ipv6

10

10

imsiapn

10

20

msisdnapn

10

20

ipv4

10

2

binding db-read-connection-settings

The recommended values listed in the table are for read operations:


Important

The highlighted values must be explicitly configured.


Table 5. Recommended Value for Read Operations

Deployment

Bindings

connections-per-host-for-read

Default Values

Recommended Values

Small Deployment

drasession

5

5

ipv6

5

5

imsiapn

5

3

msisdnapn

5

5

ipv4

5

5

Large Deployment

drasession

5

20

ipv6

5

20

imsiapn

5

10

msisdnapn

5

10

ipv4

5

1

binding cluster-binding-dbs imsiapn-msisdnapn

The following configuration is applicable only for large deployments. With this configuration IMSI-APN and MSISDN-APN bindings databases use the same connection pool for database transactions. This configuration helps in reducing the overall threads count in the worker VM.

Table 6. Recommended Values

Deployment

Recommended Value

Small Deployment

Disable

Large Deployment

Enable

Audit Rate Limiter

Database Audit is an important functionality in DRA. To ensure that the database does not fill up with unnecessary entries or expired entries are cleared, a house keeping process is always functional. The following parameters should be used based on the deployment size and rated capacity of the system.

Table 7. Audit Rate Limiter Recommended Values

Deployment

Rate Limiter

Stale Session Expiry Count

Binding DB Read Preference

Small Deployment

100

6

Nearest

Large Deployment

51

6

Nearest