Priority Call Handling and Leaky Bucket Support

Priority Call Handling is designed to ensure that critical SIP calls—such as emergency, first responder, or government priority calls—are given preferential treatment over regular calls, especially during times of system congestion or network overload. This feature addresses the need for compliance with regulatory requirements and ensures that essential communications remain robust in demanding network environments.

By default Priority Call Handling is disabled. When you enable this feature, the Converged Application Server will only reject emergency calls when all new non-emergency calls are being rejected and server capacity is fully utilized. To do this, the system inspects incoming SIP requests for priority designators like the Resource-Priority and Priority headers. Supported values for the Priority header are either emergency or psap-callback. The supported namespaces and respective levels for the Resource-Priority header are listed below.

Table 1-2 Resource-Priority

esnet wps ets
esnet.0 wps.0 ets.0
esnet.1 wps.1 ets.1
esnet.2 wps.2 ets.2
esnet.3 wps.3 ets.3
esnet.4 wps.4 ets.4

The Converged Application Server validates incoming requests against these settings. Separate message queues are maintained for each priority level, ensuring higher-priority messages are processed before lower-priority and default traffic. These queues are configurable and multiple namespaces and namespace levels can be assigned to a single priority level. The system employs a "leaky bucket" algorithm to control call admission rate per priority level. When standard call rate thresholds are breached, non-priority and lower-priority calls are throttled or rejected, while high-priority calls continue to be admitted up to their configured limits. Thresholds for queue utilization can be set, and are enforced to ensure resource exhaustion does not block critical calls.

Messages with multiple Priority header values are rejected with a 400 Bad Request. By contrast, when a message arrives with multiple Resource-Priority values, the Converged Application Server ranks the namespaces and routes the message to the queue that corresponds to the highest priority namespace. If the Require header is set to resource-priority and no supported namespace is offered, a 417 Unknown Resource‑Priority is returned by default. This status code and status text, however, are configurable. To mitigate against clients sending invalid Resource-Priority values, you can enable Resource-Priority negotiation and the Converged Application Server will send the Accept-Resource‑Priority header to advertise the supported namespaces.

SIP error responses – including status code, status text, and optional headers – can be customized to match any specific requirements. Priority call session state (queue and priority IDs) is distributed within the Converged Application Server cluster.

Configure Priority Call Handling

Use the Remote Console to configure the settings for priority call handling.

  1. From the Edit Tree, select Custom Resources, and then prioritycallconfig, and then Priority Call Settings.
  2. Toggle Enable Priority Call Handling to enable or disable priority call handling.
  3. Server List To Enable Priority Call Handling: You can either limit Priority Call Handling to a single server, a subset of servers, or the cluster. Use the value * to include all servers in the cluster.

Priority Call Settings

These are the common configurations needed for Priority Call Handling and Leaky Bucket

Table 1-3 Priority Call Settings

Field Name Default Value Allowed Values Description
Enable Priority Call Handling false true/false Enable or disables Priority Call Handling. Its default value is false.
Server List To Enable Priority Call Handling * Any valid engine or cluster name:

*

engine1

engine1,engine2

BEA_ENGINE_TIER_CLUST

Comma-separated list of servers or clusters where Priority Call Handling is applied. Default value is *, which means all servers or clusters. The field cannot be null.
Enable Resource-Priority Negotiation false true/false Enables or disables RP negotiation. Its default value is false. See RFC 4412. When enabled:
  • If the RP header value is invalid or the namespace is unsupported, the Converged Application Server replies with a 417 Response with the "Accept-Resource-Priority" header that lists supported values.
  • SIP 200 Response to SIP OPTIONS would have "Accept-Resource-Priority" header with supported values and "Supported" header appended with "resource-priority" option tag.
Validate Resource-Priority Namespace Prioritization true true/false Enables or disables Priority namespace ordering based on Queue Priority in compliance with RFC 4412. Its default value is true. The namespace wps.0 has higher priority compared to wps.1. The Queue Priority should align with this priority, if enabled. Inverted priorities will fail, such as setting wps.0 to Queue-Priority(1) and setting wps.1 to Queue-Priority(0).
Enable Message Queued Indication (SIP 182) false true/false Enables or disables generation of a 182 Queued response. See RFC 4412. The Converged Application Server can generate a 182 Queued response immediately after the incoming initial INVITE message is queued. Its default value is false.
Queue Cleanup Timer In Secs 1

Min: 0

Max: 2147483647

This value defines the interval in which queues will be checked for Expired Inbound Initial Requests.
Threshold Statistics Update Timer In Secs 30

Min: 1

Max: 2147483647

Thresholds are evaluated periodically on this configured timer expiry. Used to log the Statistical Metrics of enabled Thresholds.
New Calls Allowed(per engine) 2000

Min: 1

Max: 2147483647

New calls that are acceptable during the interval configured in property TimeIntervalInSecs.

Note:

Set this value based on the realistic CPS capacity supported by each engine.
Time Interval In Secs 1

Min: 1

Max: 60

The interval in which new calls configured NewCallsAllowed property are accepted

Enable Resource-Priority Negotiation

If a client sends the Resource-Priority header with invalid values, the Converged Application Server rejects the message with a 400 Bad Request. Optionally, you can enabled the Converged Application Server to respond with an Accept-Resource-Priority header that lists the acceptable Resource-Priority values. This allows clients to re-initiate a session with the appropriate Resource-Priority values.

  1. From the Edit Tree, select Custom Resources, and then prioritycallconfig, and then Priority Call Settings.
  2. Toggle Enable Resource-Priority Negotiation to enabled.
  3. Select Save, and then the shopping cart, and then Commit Changes.

Customize Namespace Prioritization

The priority of individual namespaces can be customized to comply with country-specific regulations.

  1. From the Edit Tree, select Custom Resources, and then prioritycallconfig, and then Priority Call Settings, and then Namespace Prioritization.
  2. Select the individual namespace whose priority you want to change.
  3. From the Queue Priority drop-down list, select the priority level that you want to change.

    Note:

    Queue Priority is the only field you can update. Any update must comply with RFC 4412.
    Queue priority 0 is the highest priority. The default queue for normal calls is -1.
  4. Select Save, and then the shopping cart, and then Commit Changes.
The default prioritization is contained in the table below.

Table 1-4 Default Prioritization

Namespaces Queue Priority
wps.0, ets.0 0 (highest)
wps.1, ets.1, esnet.4 1
wps.2, ets.2, esnet.3 2
wps.3, ets.3, esnet.2 3
wps.4, ets.4, esnet.1 4
esnet.0 5
SIP Priority header emergency/psap-callback 6
Default (no priority headers) -1 (lowest)
Namespace Prioritization Settings

Table 1-5 Namespace Prioritization Settings

Field Name Default Value Allowed Values Description
Namespace ID NA Unique namespace ID This is the unique namespace identifier to identify a priority namespace, header and its corresponding level.
Priority Header rph rph, ph Property to identity the priority header type to this entry: resource-priority-header or priority-header.
Priority Namespace NA Any valid string Property to identity the priority namespace associated with the priority call.
Priority Level NA emergency, psap-callback, 0 - 4 Property to identity the priority level associated with this entry.
Queue Priority NONE All the queues that are listed in PriorityQueue Table Queueing priority assigned to store the messages belonging to this Priority-Namespace and Priority-Level.

Update a Priority Queue

Customers can update the processing priority, the queue wait time, or the timeout error of an existing Priority Queue.

Note:

Do not change the Queue Priority or the Queue Name attributes of an existing queue.
  1. From the Edit Tree, select Custom Resources, and then prioritycallconfig, and then Priority Call Settings, and then Priority Queue.
  2. Select the Priority Queue you want to update.
  3. Choose a new Processing Priority from the drop-down list.
  4. Enter a new value for the Queue Wait Time in Secs field.
  5. Choose a new Error on Queue Timeout from the drop-down list.
  6. Select Save, and then the shopping cart, and then Commit Changes.

Create a New Priority Queue

Customers can create a new queue and assign it a priority.

  1. From the Edit Tree, select Custom Resources, and then prioritycallconfig, and then Priority Call Settings, and then Priority Queue.
  2. Select New.
  3. Enter the Queue Priority
    The Queue Priority cannot conflict with an existing number, like 0 or -1.
  4. Enter the Queue Name.
  5. Select a Processing Priority for this new queue.
    The valid range is from 5 to 10, with 10 being the highest priority.
  6. Choose an Error on Queue Timeout value from the drop-down list.
  7. Select Create, and then the shopping cart, and then Commit Changes.

Note:

Once a priority Queue is created, it cannot be deleted. However, at any point you can stop using a Priority Queue by no longer directing calls to that queue. This can be configured from Namespace Prioritization.
Priority Queue Settings

Table 1-6 Priority Queue Settings

Field Name Default Value Allowed Values Description
Queue Priority   Unique queue priority The value assigned to the priority queue to process messages belonging to a Priority-Namespace and Priority-Level. Values can be 0-n, 0 being the highest priority, n being lowest and -1 being default and least priority.
Queue Name order-new-mesage-Q Unique queue name A unique name for the queue associated with this entry.
Processing Priority 5 5 - 10 The value assigned to tasks that process stored messages in priority queues belonging to a Priority-Namespace and Priority-Level. The value 10 means the highest processing priority.
Queue Wait Time in Secs 32 0 - 360 The time in seconds for a message to be parked in a queue. If the message expires in the queue, the Converged Application Server drops the message and replies with a 408 Timeout in Queue. The value 0 means NO-EXPIRY of the message.
Error on Queue Timeout None List of error responses configured in the Error Response Config Table. The Error Reply that is sent towards the network on queue timeout. Check Error Response Settings for more information about each of the errors that can be configured.

Create a New Error Response

Customers can create customized error responses for when specific thresholds are exceeded. These error responses can then be selected when setting the Error on Breach parameter in the Leaky Bucket Call Rate Threshold node.

Note:

Do not modify the Error Id attribute of an existing error. Do not delete the default error response configurations.
  1. From the Edit Tree, select Custom Resources, and then prioritycallconfig, and then Priority Call Settings, and then Error Response Config.
  2. Select New.
  3. Enter the Error Id
  4. Enter the Status Code of this new error.
  5. Enter the Status Text of this new error.
  6. Optionally, in the Additional Header List field, enter the headers and their values that will be returned as part of this response.
    These headers must contain at least one value, but they may contain more.
  7. Select Create, and then the shopping cart, and then Commit Changes.
Error Response Config Settings

Table 1-7 Error Response Config Settings

Field Name Default Value Allowed Values Description
Error ID NA Unique Error ID Unique error identifier to indicate the error condition.
Status Code 503

Min: 400

Max: 699

SIP error status code.
Status Text Service Unavailable Any text SIP error status text.
Additional Header List NA K:V(,V1,V2) pairs New line separated K:V1(,V2,V3) pairs of additional headers to be sent as part of this error response.

Leaky Bucket Configuration

You can enable or disable the thresholds and create new thresholds. By default, the Converged Application Server has only one threshold called leaky-bucket-call-rate-threshold which is disabled. This threshold has the evaluation order of 1, which can't be edited. When enabled, all thresholds are evaluated based on evaluation order.

The Converged Application Server supports the Leaky Bucket algorithm defined in RFC 7415 (with the exception of negotiating the "oc" parameters).

When leaky-bucket-call-rate-threshold is enabled but no sub-levels are configured, all new calls – both priority and non-priority calls – are admitted until the default threshold (2000cps) is reached. When leaky-bucket-call-rate-threshold is enabled and sub-levels are configured, calls are routed to their respective priority levels based on the namespaces within the headers.

Enable the Leaky Bucket Call Rate Threshold

The leaky bucket algorithm is enabled in the leaky-bucket-call-rate-threshold node.

  1. From the Edit Tree, select Custom Resources, and then prioritycallconfig, and then Priority Call Settings, and then Priority Thresholds.
  2. Select leaky-bucket-call-rate-threshold .
  3. Toggle the Enabled slider to enable the leaky bucket algorithm.

    Note:

    Do not change the Evaluation Order with the REST API.
  4. Select Save, and then the shopping cart, and then Commit Changes.
Leaky Bucket Call Rate Settings

These are the common configurations needed for Priority Call Handling and Leaky Bucket

Table 1-8 Leaky Bucket Call Rate Settings

Field Name Default Value Allowed Values Description
Threshold Name NA Unique threshold name Unique identifier for the name of the threshold.
Enabled false true/false This flag indicates whether or not the threshold should be evaluated. Its default value is false.
Evaluation Order 1

Min: 1

Max: 2147483647

The evaluation order of this threshold. Only applicable when multiple thresholds are configured.

Create the Leaky Bucket Call Rate Threshold Levels

The Leaky Bucket Call Rate Thresholds contain multiple partitions or sub-levels that determine what percentage of total capacity is allocated for each priority namespace.

  1. From the Edit Tree, select Custom Resources, and then prioritycallconfig, and then Priority Call Settings, and then Leaky Bucket Call-Rate Threshold.
  2. Select New.
  3. In the Sub-Level Id field, enter a name for this level.
  4. From the drop-down list, select the error which the Converged Application Server will send if the threshold is exceeded.
  5. Select Create.
  6. In the Calls Acceptable Sub-Level field, set the percent of network capacity below which all calls will be accepted.

    To prevent the system being always under utilized, at least one level should be set at 100%.

  7. In the Calls Allowed in this Sub-Level, select the Priority header values and the Resource-Priority header values which must be present in a call for it to be put in this bucket.
  8. Select the right-arrow button to move those values to the Chosen window.
  9. From the drop-down list, select the error which will be sent when the threshold is exceeded.
  10. Select Save, and then the shopping cart, and then Commit Changes.
The following contains a sample sub-level thresholds.

Table 1-9 Sub-level Thresholds

Sub-Level Id Example Sub-Level Thresholds Description
level3 100% Highest priority calls (wps.0, ets.0)
level2 95% High priority calls (wps.1, ets.1, emergency)
level1 90% All calls (includes priority and default calls)