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.
- From the Edit Tree, select Custom Resources, and then prioritycallconfig, and then Priority Call Settings.
- Toggle Enable Priority Call Handling to enable or disable priority call handling.
- 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:
|
| 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.
- From the Edit Tree, select Custom Resources, and then prioritycallconfig, and then Priority Call Settings.
- Toggle Enable Resource-Priority Negotiation to enabled.
- 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.
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.- From the Edit Tree, select Custom Resources, and then prioritycallconfig, and then Priority Call Settings, and then Priority Queue.
- Select the Priority Queue you want to update.
- Choose a new Processing Priority from the drop-down list.
- Enter a new value for the Queue Wait Time in Secs field.
- Choose a new Error on Queue Timeout from the drop-down list.
- 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.
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.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.
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.
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) |