Cisco 7600 Series Routers Session Border Controller Configuration Guide
Implementing SBC Policies

Table Of Contents

Implementing SBC Policies

Contents

Prerequisites for Implementing Policies

Information About Implementing Policies

SBC Policies

Policy Events

Policy Stages

Policy Sets

Policy Tables

Number Analysis Policies

Number Validation

Number Categorization

Digit Manipulation

Routing

Routing Tables and Adjacencies

Number Manipulation

Hunting

MultiARQ Hunting

Call Admission Control

Call Admission Control

Media Bypass in Call Admission Control

CAC Rate Limiting

Subscriber Policy

How to Implement Policies

Configuring Number Analysis Tables

Configuring Number Validation

Configuring Number Categorization

Configuring Routing Tables

Configuring a Destination Address Table

Configuring the Destination, Source Domain, and Carrier ID Tables

Configuring the Category Table

Configuring the Least Cost Table

Configuring the Weighted Table

Configuring Time-Based Tables

Configuring Regular Expression-Based Tables

Configuring Number Manipulation

Configuring Hunting and MultiARQ Hunting

Activating a Routing Policy Set

Configuring Call Admission Control Policy Sets and CAC Tables

Activating a CAC Policy Set

Configuration Examples of Implementing Number Analysis

Configuring Number Validation: Example

Configuring Number Categorization: Example

Configuration Examples of Implementing Call Routing

Routing with No Load Balancing: Example

Least-Cost Routing: Example

Weighted Routing: Example

Time-Based Routing: Example

Regular Expression Routing: Example

Configuration Example of Implementing Call Admission Control Policy Sets and CAC Tables


Implementing SBC Policies


A Session Border Controller (SBC) policy is a set of rules that define how the SBC treats different kinds of voice over IP (VoIP) events. An SBC policy allows you to control the VoIP signaling and media that passes through the SBC at an application level.


Note For ACE SBC Release 3.0.00 and later releases, this feature is supported in the unified model only.


For a complete description of commands used in this chapter, refer to Chapter 39, "Cisco Session Border Controller Commands." To locate documentation for other commands that appear in this chapter, use the command reference master index, or search online.

Feature History for Implementing SBC Policies

Release
Modification

ACE SBC Release 3.1.00

Support added for:

Routing features including:

Routing by category

Source number manipulation

Least-cost routing

Weighted routing

Time-based routing

Regular expression routing

CAC Rate Limiting

Subscriber Policy

ACE SBC Release 3.0.00

This feature was introduced on the Cisco 7600 series router along with support for the SBC unified model.


Contents

This chapter contains the following sections:

Prerequisites for Implementing Policies

Information About Implementing Policies

How to Implement Policies

Configuration Examples of Implementing Number Analysis

Configuration Examples of Implementing Call Routing

Configuration Example of Implementing Call Admission Control Policy Sets and CAC Tables

Prerequisites for Implementing Policies

The following prerequisites are required to implement SBC policies:

On the Application Control Engine Module (ACE), you must be an Admin user to enter SBC commands. For more information, see the Application Control Engine Module Administration Guide at http://www.cisco.com/en/US/products/hw/modules/ps2706/products_configuration_guide_book09186a00806838f4.html.

Before implementing policies, the SBC must already be created. See the procedures described in Chapter 2, "ACE Configuration Prerequisites for the SBC".

Information About Implementing Policies

An SBC policy is a set of rules that define how the SBC treats different kinds of VoIP events. An SBC policy allows you to control the VoIP signaling and media that passes through the SBC at an application level. Figure 13-1 shows an overview of policy control flow.

Figure 13-1 Policy Control Overview

Number analysis and routing are configured in one type of configuration set, admission control is configured in another.

Number analysis (NA) determines whether a set of dialed digits represents a valid telephone number (based on number validation, number categorization, or digit manipulation). Call routing determines the VoIP signaling entity to which a signaling request should be sent. A destination adjacency is chosen for the signaling message based on various attributes of the message (for example, based on source account or adjacency). Routing policy is applied to new call events and to subscriber registration events.

Call Admission Control (CAC) limits the number of concurrent calls and registrations, and restricts the media bandwidth dedicated to active calls. It allows for load control on other network elements by rate limiting. Certain events can be completely blocked (using a blacklist) or freely allowed (using a whitelist), based on certain attributes.

Not all policies are mandatory:

To call between subscribers, only endpoint routing policy is required.

To call between telephone numbers, only call routing policy is required.

Number analysis and admission control are optional, although they are likely to be required by the user.

Policies refer to accounts and adjacencies by name. Therefore, you may find it useful to configure and name adjacencies before configuring policies although this is not required.

The following sections describe the many concepts critical to understanding how to implement SBC policies:

SBC Policies

Number Analysis Policies

Routing

Call Admission Control

SBC Policies

This section describes the following SBC policies:

Policy Events

Policy Stages

Policy Sets

Policy Tables

Policy Events

Policies are applied to the following events:

New calls—When new calls are signaled to the SBC, the SBC applies a policy to determine what happens to the new call request and what constraints the call must satisfy during its lifetime.

Call updates—If one of the endpoints in a call attempts to renegotiate new media parameters, the SBC applies policy to ratify the attempt.

Subscriber registrations—If a subscriber attempts to register through the SBC, the SBC applies policy to determine what happens to the registration request.

Policy Stages

There are three distinct stages of a policy, which are applied in strict order to the policy events. The stages in which policy is applied are as follows:

Number analysis

Routing

Admission control

Some of these policy stages are skipped for particular types of events. Figure 13-2 shows the sequence of the policy stages for each event type.

Figure 13-2 Policy Stages for Event Types

If the policy stages fail, the call is rejected and the failure is propagated back to the calling device (using either session initiation protocol (SIP) or H.323 signaling, as appropriate) with the error codes in Table 13-1.

Table 13-1 Policy Stage Errors 

Component
Resulting SIP Error Code
Resulting H.323 Error

Number analysis

604 "Does not exist anywhere"

ITU-T Q.931 Release Complete UUIE with H.225 Reason field unreachableDestination

Routing

604 "Does not exist anywhere"

ITU-T Q.931 Release Complete UUIE with H.225 Reason field unreachableDestination

Call Admission Control

503 "Service Unavailable"

ITU-T Q.931 Release Complete UUIE with H.225 Reason field noPermission



Note If the call fails at the routing or Call Admission Control phase, it is released. There is no attempt to retry. Whether or not to retry is left to the upstream (calling) device to decide.


The following sections describe policy stages in more detail:

Number Analysis

Routing

Admission Control

Number Analysis

Number Analysis (NA) determines whether a set of dialed digits represents a valid telephone number. This is achieved by configuring one or more tables of valid dialed digit strings using a limited-form regular-expression syntax, then matching the actual dialed digits against the different strings in the tables.

NA policy is applied only to new call events. If NA determines that a new call does not contain a valid set of dialed digits, the SBC rejects the call, using the error code described in the "Policy Stages" section.

NA rules are sensitive to the source account and source adjacency of a call, which allows different dial plans to be configured for different customer organizations, or even for different endpoints.

In addition to validating a dialed number, NA policy can also:

Reformat the dialed digits into canonical form; for example, E.164 format.

Label the call with a category, which is used by the later stages of policy.

Routing

Routing determines the next-hop VoIP signaling entity to which a signaling request should be sent. Routing of VoIP signaling messages occurs in two stages:

Policy-based routing—The first stage of routing. In policy-based routing, a destination adjacency is chosen for the signaling message, based on various attributes of the message, discussed later.

Protocol-based routing—Takes place after policy-based routing. Protocol-based routing uses a VoIP protocol-specific mechanism to deduce a next-hop IP address from the signaling peer configured for the destination adjacency chosen by policy-based routing.

For example, if the destination adjacency is a SIP adjacency and the signaling peer is uk.globalisp.com, the SBC uses domain name server (DNS) or IP lookup to determine the IP address and port of the SIP server for the domain uk.globalisp.com, and forwards the appropriate signaling message to that IP address and port.

Routing policy is applied to new call events and to subscriber registration events.

If a new call event matches an existing subscription, the call is routed automatically to the source IP address and port of the original subscriber registration. No configured policy is required to achieve this, and no configured policy can influence the routing of such calls.

Routing policy is not applied to call update events; call update signaling messages are routed automatically to the destination adjacency that was chosen for the new call event that originated the call.

It is possible that an event cannot be routed, if its attributes do not match a suitable configured routing rule. In such cases, the SBC rejects the event using a suitable error code.

Admission Control

Call admission control determines whether an event should be granted or refused based on configured limits for network resource utilization. There are two reasons for performing admission control.

To defend load-sensitive network elements, such as softswitches, against potentially harmful levels of load precipitated by singular events, such as Do attacks, natural or man-made disasters, or mass-media phone-ins.

To police the Service Level Agreements (SLAs) between organizations, to ensure that the levels of network utilization defined in the SLA are not exceeded.

Call admission control policy is applied to all event types. If an event is not granted by admission control policy, then the SBC rejects it with a suitable error code.

Policy Sets

A policy set is a group of policies that can be active on the SBC at any one time. If a policy set is active, then the SBC uses the rules defined within it to apply policy to events. You can create multiple policy sets on a single SBC; this feature has two potential uses:

It enables you to atomically modify the configured policy by creating a copy of the currently active policy set, making all necessary changes, reviewing the modified policy, and then switching the active policy set. If a problem is discovered with the new policy set after it is activated, the SBC can be switched back to using the previous policy set with a single command.

It enables you to create different policy sets for use at different times and to switch between them at the appropriate times.

Number analysis and routing are configured in a call policy set. Admission control is configured in a CAC policy set.

Only one policy set of each type can be active at any given time. You can switch the active policy set at any time. You cannot modify the currently active policy set, but can modify policy sets that are not active.

A new policy set either can be created empty (that is, without any configured policies), or created as a copy of another policy set. A policy set can be deleted, provided that it is not the active policy set.

When the SBC is initialized, there are no active policy sets. At any time after initialization, the active policy set can be undefined. While there is no active routing policy, each event that requires routing is rejected.

Policy Tables

All policy on the SBE is configured in a set of tables. This section describes the overall structure of the policy tables, as described in the following sections:

Nomenclature

Application of Policy

Policy Table Example

Nomenclature

This section defines some terms that we later use when discussing policy tables.

A policy table has the following properties:

A name that uniquely identifies the table within the scope of a single policy set. Tables in different policy sets may have the same name.

A type, which defines the criterion that is used to select an entry from the table.

A collection of table entries.

A policy table entry is a member of a policy table. It has the following properties:

A value to match on (the match value). The semantics of this value are determined by the table type. No two entries in the same table may have identical match values.

An optional action to perform on the event, if it matches this entry.

An optional name of the next table to search for policy, if the event matches this entry.

Application of Policy

The policy tables are searched whenever an event occurs. The policy to be applied to the event is built up as the tables are searched.

The policy sets contains the following properties, which define which policy tables are searched at each stage of the policy calculation. The call policy set contains:

First NA policy table to process

First routing policy table to process for calls

First routing policy table to process for endpoint registrations

The CAC policy set contains the first admission control policy table.

When an event occurs, the policy tables are searched as follows. This procedure is followed once for every stage of policy to which an event is subjected.

The first table for the particular stage of the policy calculation is obtained from the active configuration set.

The type of the table defines which of the event's attributes (for example, the destination number or the source adjacency) is being examined by this table.

This attribute is compared against the match value of every entry in the table. This results in either exactly one entry matching the event, or no entries matching the event.

If an entry matches the event, then the action associated with that entry is performed. After the action is performed, if the entry contains the name of a next table, that table is processed. If there is no next table, then the policy calculation is complete and processing for this stage of policy ends.

If no entry matches the event, then the policy calculation is complete and processing for this stage of policy ends.

Policy Table Example

The following example illustrates the flow of control as policy tables are parsed at a particular stage of policy for a particular event. The event in this example is a new call, received from source account with destination number 129. The stage of policy considered here is routing.

This example is provided for illustrative purposes only; routing tables are described in detail in the "Routing" section.

Figure 13-3 shows the relevant routing tables.

Figure 13-3 Policy Table Example

The policy calculation begins by looking up the first policy table to be used by the routing stage. This is the table with name RtgAnalyzeSourceAccount. This table is processed as follows:

The match-type of the table is src-account, so the source account of the new call event is compared with each of the entries in this table.

The table entry that matches on csi provides a match for this new call event. There is no action associated with this entry, but the entry points to a next table with name RtgAnalyzeDestCSINumber.

The flow of control then passes to the table with name RtgAnalyzeDestCSINumber. This table is processed as follows:

The match-type of the table is dst-number, so the destination number of the new call event is compared with each of the entries in this table.

The table entry that matches on 1xx provides a match for this new call event. The action associated with this entry is performed; that is, the destination adjacency for the new call event is set to csi-chester.

This entry does not point to a next table, so the policy calculation for the routing stage ends.

This example shows successful routing of the new call. The outcome is successful because the destination adjacency of the new call is selected before the policy calculation finishes. It is entirely possible for the outcome of routing to be unsuccessful for a new call if the routing policy tables do not assign a destination adjacency to the call before the routing policy calculation ends. For example, the routing policy illustrated above does not successfully route a new call whose source account is csi and whose destination number is 911.

In this example, a single entry is selected from each table that is traversed during the calculation. In general, at most one entry in any policy table matches an event to which policy is being applied. In cases in which more than one entry would match an event, the best matching entry is selected.

Number Analysis Policies

Three different types of Number Analysis (NA) policies are configured within NA tables. These types of NA policies are applied simultaneously to new calls and are described in the following sections:

Number Validation

Number Categorization

Digit Manipulation

Number Validation

Number validation is fundamental to the process of traversing number analysis policy tables. A number is validated if the NA tables are traversed and the final entry examined contains an action of accept. A number is not valid if the NA tables are traversed, and the final entry examined contains an action of reject. A number also is not valid if, at any stage of processing the NA tables, a table with no matching entries is encountered.

Number analysis tables can be one of the following types:

dst-number—Tables of this type contain entries whose match values represent complete numbers. In such tables, an entry matches an event if the entire dialed digit string exactly matches the match value of the entry.

dst-prefix—Tables of this type contain entries whose match values represent number prefixes. In such tables, an entry matches an event if there exists a subset of the dialed digit string, consisting of consecutive digits taken from the front of the dialed digit string, that exactly matches the match value of the entry.

src-account—Tables of this type contain entries whose match values are the names of accounts. In such tables, an entry matches an event if the name of the source account of the event exactly matches the match value of the entry.

src-adjacency—Tables of this type contain entries whose match values are the names of adjacencies. In such tables, an entry matches an event if the name of the source account of the event exactly matches the match value of the entry.

carrier-id—Tables of this type contain entries matching the carrier ID.

Digit-matching NA Tables

The format of the match values of entries in NA tables that match on the destination number or destination number prefix is a limited-form, regular expression string representing a string of dialed digits. The syntax used is described in Table 13-2.

Table 13-2 Syntax of Match Values for Entries in Digit-matching NA Tables 

X

Any numerical digit 0 - 9.

( )

The digit within the parentheses is optional. For example, (0)XXXX represents 0XXXX and XXXX.

[ ]

One of the digits within the square brackets is used. For example, [01]XXX represents 0XXX and 1XXX. A range of values can be represented within the square brackets. For example, [013-5]XXX represents 0XXX, 1XXX, 3XXX, 4XXX and 5XXX.

*

The * key on the telephone.

#

The # key on the telephone.


In such tables, it is always possible that more than one entry in the table may match a particular digit string. For example, entries that match 1xx and 12x both match a digit string 129. However, a single entry must be chosen from each table, so the SBC chooses the best matching entry by applying the following rules in the order given.


Step 1 Choose the longest explicit match.

If the NA table is a dst-prefix type, it is possible that more than one entry specifies an explicit number (that is, one that contains no X characters or [ ] constructs) and matches the dialed number of the event. In this situation, the entry with the longest number has priority.

For example, the dialed number begins 011, the number validation table is a dst-prefix type, and there are two matching entries with numbers 01 and 011. The entry with the number 011 takes priority, because it is a longer number.

Step 2 If there is no explicit match, choose the longest wildcard match.

If the table does not contain an explicit entry to match the dialed number of the event, the longest wildcard entry that matches takes priority.

Step 3 If there are multiple wildcard matches of the same length, choose the most explicit.

For example, the dialed number is 01234567890, the NA table is a dst-number type, and there are two matching entries with match values 0123XXXXXXX and 0123456XXXX. In the first entry, the fifth digit is a wildcard; in the second entry, the eighth digit is a wildcard, so the second entry takes priority.

If the same number is dialed, and a different NA table has matching entries [01]234XXXXXXX and 0XXXXXXXXXX, the second entry takes priority, because in the first entry the first digit is a wildcard.


Number Categorization

Events can be placed into user-defined categories during NA processing. This is achieved by specifying a categorization action in an entry of an NA table. Categories are useful, because they may be referred to later during the admission control policy stage.

At most, one category may be associated with an event. If, during processing of the NA tables, categories are assigned to an event multiple times, then the last category to be assigned is used. When a category is assigned to an event, it cannot be deleted, only replaced with another category.

Digit Manipulation

During NA, it is often a requirement to normalize numbers—in other words, convert them from the internal format used by a particular organization or service provider to a canonical format understood globally in the Internet and PSTN.

This is achieved by specifying one or more of the following actions in an entry of an NA table:

debriefing n—This action removes the leading n digits from the dialed digit string, or deletes the entire string if it is n or fewer digits long.

del_suffix n—This action removes the final n digits from the dialed digit string, or deletes the entire string if it is n or fewer digits long.

add_prefix digit string—This action adds the given digit string to the front of the dialed digit string.

replace digit string—This action replaces the entire dialed digit string with the given digit string.

Routing

This section describes the following routing policies:

Routing Tables and Adjacencies

Number Manipulation

Hunting

MultiARQ Hunting

Routing Tables and Adjacencies

This section explains how routing tables are configured on the SBC.

The inputs to the policy-based routing stage are as follows:

The destination number of the event, which is the post-NA dialed digit string (that is, it may have been modified from the original dialed digit string)—This input is present only if the event is a new call.

The source number of the event—This input is present only if the event is a new call.

The source adjacency of the event.

The source account of the event.

The routing policy tables examine some or all of these inputs, and produce one of the following outputs:

A single destination adjacency.

A group of adjacencies used for load balancing. One of these is chosen, depending on the load previously sent to the adjacencies in this group.

Routing tables represent one of the following types:

dst-addressTables of this type contain entries matching the dialed number (after number analysis). These values are either complete numbers or number prefixes (depending on whether the prefix parameter is given). Without the prefix parameter, an entry matches an event if the dialed digit string exactly matches the match value of the entry. With the prefix parameter, an entry matches an event if there exists a subset of the dialed digit string, consisting of consecutive digits taken from the front of the dialed digit string that exactly matches the match value of the entry.

Routing actions also match text usernames using a regular expression rather than a literal text string. Routing actions are considered to match if the regular expression matches at least one part of the address.

src-address—Tables of this type contain entries matching the dialer's number or SIP user name. These values are either complete numbers or number prefixes (depending on whether the prefix parameter is given). Without the prefix parameter, an entry matches an event if the entire digit string representing the calling number exactly matches the match value of the entry. With the prefix parameter, an entry matches an event if there exists a subset of the digit string that represents the calling number, consisting of consecutive digits taken from the front of this string that exactly match the match value of the entry.

Routing actions also match text usernames using a regular expression rather than a literal text string. Routing actions are considered to match if the regular expression matches at least one part of the address.

src-account—Tables of this type contain entries matching the names of accounts. In such tables, an entry matches an event if the name of the source account of the event exactly matches the match value of the entry.

src-adjacency—Tables of this type contain entries matching the names of adjacencies. In such tables, an entry matches an event if the name of the source account of the event exactly matches the match value of the entry.

src-domain—Tables of this type contain entries matching the source domain names.

Routing actions can match using full regular expressions. Routing actions are considered to match if the regular expression matches at least one part of the domain.

dst-domain—Tables of this type contain entries matching the destination domain names.

Routing actions can match using full regular expressions. Routing actions are considered to match if the regular expression matches at least one part of the domain.

carrier-id—Tables of this type contain entries matching the carrier ID.

round-robin-table—A group of adjacencies are chosen for an event if an entry in a routing table matches that event and points to a round-robin adjacency table in the next-table action. A round-robin adjacency table is a special type of policy table, whose events do not have any match-value parameters, nor next-table actions. Its actions are restricted to setting the destination adjacency.

category—Tables of this type contain entries matching on the category that was assigned to the call during number analysis. You assign the category during number analysis.

time—Tables of this type contain entries matching on a user-configured time. The entries can have overlapping match periods. Time periods can be specified by year, month, date, day of the week, hour, or minute.

least-cost—Tables of this type contain entries matching on the user-configured precedence (cost) of the entries. If more than one entry has an equal cost, an entry ise selected based on a user-configured weight or an entry is selected based on the number of active calls on each route. If routing fails, then the adjacency with the next lowest cost is selected.

The rules specified in the "Digit-matching NA Tables" section govern the format and matching rules of the match-values of the entries in routing tables of type dst-number, dst-prefix, src-number and src-prefix.

Number Manipulation

The number manipulation feature enables you to specify various number manipulations that can be performed on a dialed number after a destination adjacency has been selected.

This enhancement affects the billing functionality as it allows the SBC to display both the original and the edited dialed number for a call. For example:

    <party ty"e="o"ig" pho"e="01234567890"/>
    <party ty"e="t"rm" pho"e="23456789"31" editphone="1111111111111"/>


Note The phone numbers in the above example are not real.


The number manipulation feature requires that the edit action be allowed in the routing policy entries. The edit action takes the same parameters as the edit action for the number analysis tables, enabling you to delete a number of characters from the beginning or end of the dialed string, add digits to the start of the string, or replace the entire string with another. For example, if the following table were matched:

call-policy-set 1
  rtg-src-adjacency-table table1
    entry 1
      match SipAdj1
      edit del-prefix 3
      dst-adjacency SipAdj2
      action complete
    end
  end

then the dialed string would have the first of its digits deleted.

In the number analysis stage you can specify categories as shown below.

call-policy-set 1
    first-number-analysis-table check-accounts
    na-src-account-table check_accounts
     entry 1 
      match-account hotel_foo 
      action next-table hotel_dialing_plan
     entry 2 
      match-account hotel_bar 
      action next-table hotel_dialing_plan
     entry 3
      match-account internal 
      action accept
    na-dst-prefix-table hotel_dialing_plan
      entry 1 
       match-prefix XXX 
       category internal
       action accept
     entry 2
      match-prefix 9XXX
      category external
      action accept

Later during routing, the calls are routed based on assigned categories.

  call-policy-set 1
    first-call-routing-table start_routing
    rtg-category-table start_routing
      entry 1
       match-category internal
       action next-table internal_routing
      entry 2
       match-category external
       action next-table external_routing
    rtg-src-adjacency-table internal_routing
      entry 1
        match-adjacency sip_from_foo
        dst-adjacency sip_to_foo
        action complete
      entry 2
       match-adjacency sip_from_bar
       dst-adjacency sip_to_bar
       action complete
     rt-dst-address-table external_routing
      entry 1
       match-address 208111
       prefix
       dst-adjacency sip_to_foo
       action complete
      entry 2
       match-address 208222
       prefix
       dst-adjacency sip_to_bar
       action complete
      entry 3
       match-address 208333
       prefix
       dst-adjacency sip_to_softswitch
       action complete

Note The category of a call cannot be changed in a routing table. Categories are only assigned during number analysis.


You can also specify various number manipulations to be performed on a dialing or dialed number after a destination adjacency is selected. The following example adds a prefix of "123" to the source number, for all calls coming in on "SipAdj1" adjacency and destined to "SipAdj2".

call-policy-set 1
  rtg-src-adjacency-table table1
    entry 1
      match SipAdj1
      edit-src add-prefix 123
      dst-adjacency SipAdj2
      action complete

Hunting

This enhancement enables the SBC to hunt for other routes or destination adjacencies in case of a failure. Hunting means the route is retried. There are several ways in which failures can occur, including

CAC policy refuses to admit a call.

Routing Policy Services are unable to route a call.

A call setup failure is received via SIP or H323.

If a CAC policy fails to allow a call, you can attempt to reroute the call using RPS, and try the call admission policy again. If the SBC receives a call setup failure from SIP or H323, and the error code is one of the newly configurable sets, then the SBC retries the routing.

MultiARQ Hunting

MultiARQ hunting enables the SBC to hunt for other routes or destination adjacencies using a non-standard H.323 mechanism based on issuing multiple ARQs to a Gatekeeper for a single call.

MultiARQ hunting works in the following way:

An H.323 endpoint on the SBC sends an admissionRequest (ARQ) to a Gatekeeper as part of establishing an outbound call leg.

The Gatekeeper contacts other network entities and identifies one or more potential endpoints.

The Gatekeeper returns an admissionConfirm (ACF) which contains a single destinationInfo and no alternateEndpoints.

The SBC attempts to contact the endpoint identified in the ACF. The endpoint either rejects the call, or the endpoint is unreachable, and the configuration of hunting triggers indicates that hunting is possible.

The Gatekeeper may contact other network entities in order to identify further suitable endpoint identifiers.

The Gatekeeper returns an ACF containing a single destinationInfo and the call attempt continues as per the first received ACF.

The hunting cycle described above continues until one of the following conditions is met:

An endpoint is contacted and the call completes.

A Gatekeeper ARQ retry is required but a hard coded limit on the number of permitted retry ARQs has been reached. This limit is currently set to 32.

The Gatekeeper returns an admissionReject, implying that there are no further suitable endpoint identifiers.

An endpoint returns a rejectReason which is not configured as a hunting trigger.

An endpoint cannot be contacted and connectFailed is not configured as a hunting trigger.

For cases where the call fails, the following processing is performed.

If the call failed as a result of a Gatekeeper returning an admissionReject for the initial ARQ, no disengageRequest is sent to the Gatekeeper, the call is rejected, and further hunting cannot be performed by the Routing Policy Services (RPS).

If the call failed as a result of a Gatekeeper returning an admissionReject for a second or subsequent ARQ, which is the indication that multiARQ hunting has exhausted a list of possible targets, no disengageRequest is sent to the Gatekeeper, the call is rejected, but further hunting may be performed by the Routing Policy Services (RPS).

If the call failed as a result of a connection failure or a reject reason, which is not configured as a hunting trigger, a disengageRequest is sent to the Gatekeeper, the call is rejected, and further hunting cannot be performed by the Routing Policy Services (RPS).

A limit on the maximum number of permitted ARQs is required to avoid a Denial of Service (DoS) type problem or attack. If multiARQ hunting is enabled but the Gatekeeper keeps returning the same destinationInfo (or repeats the cycle of endpoints in a series of ARQs) then there may be no trigger to end the hunting phase. Imposing a limit on the number ARQs provides a backstop against such a problem.

Call Admission Control

This section describes the following:

Call Admission Control

Media Bypass in Call Admission Control

CAC Rate Limiting

Subscriber Policy

Call Admission Control

Call Admission Control (CAC) limits the number of concurrent calls and registrations, and restricts the media bandwidth dedicated to active calls. It allows for load control on other network elements by rate limiting. Certain events can be completely blocked (using a blacklist) or freely allowed (using a whitelist), based on certain attributes.

Call admission control determines whether an event should be granted or refused based on configured limits for network resource utilization. There are two reasons for performing admission control.

To defend load-sensitive network elements, such as softswitches, against potentially harmful levels of load precipitated by singular events, such as DoS attacks, natural or man-made disasters, or mass-media phone-ins.

To police the Service Level Agreements (SLAs) between organizations, to ensure that the levels of network utilization defined in the SLA are not exceeded.

Call admission control policy is applied to all event types. If an event is not granted by admission control policy, then the SBC rejects it with a suitable error code.

Media Bypass in Call Admission Control

The media bypass feature allows the media packets to bypass the SBC, enabling the endpoints to communicate directly to each other. Media packets flow directly without going through the DBE component of the SBC after the call signaling is performed. Signaling packets still flow through the SBC as usual. The configuration is set per adjacency, and allows media bypass across different adjacencies.

In ACE SBC Release 3.0.00, CAC can control whether media-bypass is on or off. The media bypass is configured both per adjacency and in CAC. However, the default is still to perform media bypass if the adjacencies are on the same VPN. In addition, CAC can turn media bypass off based on destination or source prefix and account.

The requirements for this new feature are the following:

The media-bypass-forbid option must be set in a CAC table.

The CAC configuration takes priority over the configuration set on the adjacency.

To perform media bypass between two adjacencies, the following precedence rules take effect:

Both adjacencies must be on the same VPN.

Both adjacencies must be allowed to perform media bypass by CAC.

Both adjacencies must have their per-adjacency media bypass on.

CAC Rate Limiting

For ACE SBC Release 3.1.00, you can limit the number or rate of new calls accepted and the number of media renegotiations within a call. However, limits are not placed on the following:

Media renegotiations that do not actually change the characteristics of the call.

Any other in-call messages. (In-call messages include any message within the context of a call, including provisional responses during call setup and call renegotiation messages, but not including call setup or tear-down messages.)

Internally generated messages


Note You cannot specify limits at the granularity of a specific SIP or H.323 message.


You can also limit the rate and number of registrations passing through SBC. However, limits are not placed on any other out-of-call messages. (An out-of-call message is any messages that is not following within the context of a call and that does not form part of registration processing. These are always classified as either a request or a response.)

ACE SBC Release 3.1.00 allows you to rate limit all in-call and out-of-call messages.

This includes in-call messages at all scopes, as normal. For example:

Configuration at the "per-call" scope allows you to limit the rate at which an endpoint sends messages within a call.

Configuration at the "dst-adjacency" scope allows you to limit the total rate of in-call messages sent out of an adjacency within all of the calls using that adjacency. (This could ensure that the load out of an adjacency never exceeds that which the attached network entity can cope with.)


Note SIP INVITE requests, 200 responses and ACK messages, SIP PRACK messages and response, SIP BYE messages and response, and for H.323 calls, Q.931 SETUP, Q.931 CONNECT and Q.931 RELEASE messages are not rate-limited.


You can place restrictions on the rate at which out-of-call messages are processed. Configuration is permitted at all scopes except per-call scope (because this scope does not exist for out-of-call messages).

The SBC gracefully rejects in-call messages when the rate exceeds that specified in the CAC. When an in-call message is not processed, the SBC does the following:

For SIP messages, the SBC rejects the message gracefully, wherever possible. The rejection is sent back to the sending endpoint, so the call is likely to survive.

Because H.323 messages do not require a response, they cannot be gracefully rejected, so the SBC drops the message. This is likely to be disruptive for the call.

The SBC gracefully rejects out-of-call messages when the rate exceeds that specified in CAC.

All rate limits must be protocol stack independent; limits must police both SIP and H.323 messages.

In addition to configuring blacklists based on a number of CAC policy failures, you can now allow blacklists to be applied to endpoints that send in-call or out-of-call messages at a high rate.

Subscriber Policy

A user can subscribe multiple endpoints to the network to allow them to make calls. A subscriber is one of those endpoints. In a particular network, you might want to limit each subscriber to no more than a specific number of simultaneous calls. ACE SBC Release 3.1.00 provides a subscriber policy feature that allows you to limit each subscriber to a specific number of simultaneous calls.

This feature provides the ability to configure the CAC limits. For example, you can configue the maximum number of concurrent calls, the maximum number of registrations, or the maximum call rate at different scopes like subcriber, subscriber category, and subscriber category prefix.

You can configure CAC tables:

To associate a subscriber with a subscriber category. Call events between that subscriber and the core network are also associated with that same subscriber category.

To match on a subscriber category or on a subscriber category prefix (the first n bits of the subscriber category), and then set limits when matched. The subscriber category prefix specifies the length of prefix to match. If set to 0, this field is ignored and this entry matches only on explicit subscriber category matches. If set to any other value than 0, say n, then only the first n bits of each of the call's subscriber categories is checked for a match.

To to set limits per subscriber category.

To set limits per subscriber.

How to Implement Policies

SBC policies are configured and activated as described in the following sections:

Configuring Number Analysis Tables

Configuring Routing Tables

Configuring the Category Table

Configuring Hunting and MultiARQ Hunting

Configuring Call Admission Control Policy Sets and CAC Tables

Activating a CAC Policy Set

Configuring Number Analysis Tables

This task configures a number analysis table. The types of number analysis configuration are described in the following sections:

Configuring Number Validation

Configuring Number Categorization

Configuring Number Validation

This task configures number validation for a number analysis table.

SUMMARY STEPS

1. configure

2. sbc service-name

3. sbe

4. call-policy-set policy-set-id

5. first-number-analysis-table table-name

6. na-dst-prefix-table table-name

7. entry entry-id

8. match-prefix key

9. action [next-table goto-table-name | accept | reject]

10. category category-name

11. entry entry-id

12. edit [del-prefix pd] | [del-suffix sd] | [add-prefix pa] | [replace ds]

13. edit-cic {del-prefix pd | del-suffix sd | add-prefix pa | replace ds}

14. match-prefix key

15. action [next-table goto-table-name | accept | reject]

16. category category-name

17. entry entry-id

18. match-prefix key

19. action [next-table goto-table-name | accept | reject]

20. category category-name

21. exit

22. exit

23. show

DETAILED STEPS

 
Command or Action
Purpose

Step 1 

configure

Example:

host1/Admin# configure

Enables global configuration mode.

Step 2 

sbc service-name

Example:

host1/Admin(config)# sbc mySbc#

Enters the mode of an SBC service.

Use the service-name argument to define the name of the service.

Step 3 

sbe

Example:

host1/Admin(config-sbc)# sbe

Enters the mode of an SBE entity within an SBC service.

Step 4 

call-policy-set policy-set-id

Example:

host1/Admin(config-sbc-sbe)# call-policy-set 1

host1/Admin(config-sbc-sbe-rtgpolicy)#

Enters the mode of routing policy set configuration within an SBE entitiy, creating a new policy set, if necessary.

Step 5 

first-number-analysis-table table-name

Example:

host1/Admin(config-sbc-sbe-rtgpolicy)#

first-number-analysis-table hotel_table

Configures the name of the first policy table to process when performing the number analysis stage of policy.

Step 6 

na-dst-prefix-table table-name








Example:

host1/Admin(config-sbc-sbe-rtgpolicy)#

na-dst-prefix-table hotel_table

Enters the mode for configuring a number analysis table whose entries match the prefix (the first several digits) of the dialed number within the context of an SBE policy set.

Commands for other number analysis tables:

na-carrier-id-table—This table requires additional commands match-cic and edit-cic (see below)

na-dst-number-table

na-src-accoun-table

na-src-adjacency-table

Step 7 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable)# entry 1

Enters the mode for configuring an entry in a number analysis table, creating the entry, if necessary.

Step 8 

match-prefix key | match-cic cic







Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# match-prefix XXX

Configures the match value of an entry in the number analysis table.

The match-prefix key argument is a string used to match the prefix (the starting part) of the dialed number.

The match-cic cic argument is used with the na-carrier-id-table command and configures the match carrier ID code in a table whose entries match the whole dialed number.

Step 9 

action [next-table goto-table-name | accept | reject]






Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# action accept

Configures the action of an entry in a number analysis table. Possible actions are:

Configure the name of the next number analysis table to process if the event matches this entry using the next-table keyword and the goto-table-name argument.

Configure the call to be accepted if it matches the entry in the table using the accept keyword.

Configure the call to be rejected if it matches the entry in the table using the reject keyword.

Step 10 

category category-name

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# category external

Configures the category of an entry in the number analysis table.

Step 11 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# entry 2

Enters the mode for configuring an entry in a number analysis table, creating the entry, if necessary.

Step 12 

edit [del-prefix pd] | [del-suffix sd] | [add-prefix pa] | [replace ds]




















Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# edit del-prefix 1

Configures a dial-string manipulation action in a number analysis table. You are not allowed to do this if the table is part of the active policy set.

The no version of the command deletes the edit action of the given entry in the routing table.

The edit command can be set to the following values:

del-prefix pd—Delete prefix pd, where pd is a positive integer specifying a number of digits to delete from the front of the dialed string.

del-suffix sd—Delete suffix sd, where sd is a positive integer specifying a number of digits to delete from the end of the dialed string.

add-prefix pa—Add prefix pa, where pa is a string of digits to add to the front of the dialed string.

replace ds—Replace ds, where ds is a string of digits that replaces the dialed string.

In the example to the left, the edit command sets entry 2 to delete 1 digit from the beginning of the dialed string in the number analysis table.

Step 13 

edit-cic {del-prefix pd | del-suffix sd | add-prefix pa | replace ds}






















Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# edit-cic del-prefix 4

Configures a carrier identification code (CIC) manipulation action in any number analysis table.

You are not allowed to do this if the table is part of the active policy set.

The no version of the command destroys the match value.

del-prefix pd: A positive integer specifying a number of digits to delete from the front of the carrier ID string.

del-suffix sd: A positive integer specifying a number of digits to delete from the end of the carrier ID string.

add-prefix pa: A string of digits to add to the front of the carrier ID string.

replace ds: A string of digits to replace the carrier ID string with.

The following command sets entry 2 to delete the first digit of the carrier ID in the current number analysis table.

If you wish to remove the carrier ID entirely from outgoing messages, he should specify a replacement string of 0 or a prefix deletion string of 4. For example,

edit-cic del-prefix 4   OR
edit-cic replace 0

Step 14 

match-prefix key

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# match-prefix 9XXX

Configures the match value of an entry in the number analysis table. The key argument is a string used to match the start of the dialed number.

Step 15 

action [next-table goto-table-name | accept | reject]






Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# action accept

Configures the action of an entry in a number analysis table. Possible actions are:

Configure the name of the next number analysis table to process if the event matches this entry using the next-table keyword and the goto-table-name argument.

Configure the call to be accepted if it matches the entry in the table using the accept keyword.

Configure the call to be rejected if it matches the entry in the table using the reject keyword.

Step 16 

category category-name

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# category external

Configures the category of an entry in the number analysis table.

Step 17 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# entry 3

Enters the mode for configuring an entry in a number analysis table, creating the entry, if necessary.

Step 18 

match-prefix key

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# match-prefix 8XXX

Configures the match value of an entry in the number analysis table. The key argument is a string used to match the start of the dialed number.

Step 19 

action [next-table goto-table-name | accept | reject]






Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# action accept

Configures the action of an entry in a number analysis table. Possible actions are:

Configure the name of the next number analysis table to process if the event matches this entry using the next-table keyword and the goto-table-name argument.

Configure the call to be accepted if it matches the entry in the table using the accept keyword.

Configure the call to be rejected if it matches the entry in the table using the reject keyword.

Step 20 

category category-name

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# category bar

Configures the category of an entry in the number analysis table.

Step 21 

exit

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# exit

Exits from the entry mode to the natable mode.

Step 22 

exit

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable)# exit

Exits from the natable mode to the rtgpolicy mode.

Step 23 

show

Example:

host1/Admin(config-sbc-sbe-rtgpolicy)#

Displays the current configuration information.

Configuring Number Categorization

This task configures number categorization for a number analysis table.

SUMMARY STEPS

1. configure

2. sbc service-name

3. sbe

4. call-policy-set policy-set-id

5. first-number-analysis-table table-name

6. na-src-account-table table-name

7. entry entry-id

8. match-account key

9. action [next-table goto-table-name | accept | reject]

10. entry entry-id

11. match-account key

12. action [next-table goto-table-name | accept | reject]

13. entry entry-id

14. match-account key

15. action [next-table goto-table-name | accept | reject]

16. na-dst-prefix-table table-name

17. entry entry-id

18. match-prefix key

19. category category-name

20. action [next-table goto-table-name | accept | reject]

21. entry entry-id

22. match-prefix key

23. category category-name

24. action [next-table goto-table-name | accept | reject]

25. exit

26. exit

27. show

DETAILED STEPS

 
Command or Action
Purpose

Step 1 

configure

Example:

host1/Admin# configure

Enables global configuration mode.

Step 2 

sbc service-name

Example:

host1/Admin(config)# sbc mySbc

Enters the mode of an SBC service.

Use the service-name argument to define the name of the service.

Step 3 

sbe

Example:

host1/Admin(config-sbc)# sbe

Enters the mode of an SBE entity within an SBC service.

Step 4 

call-policy-set policy-set-id

Example:

host1/Admin(config-sbc-sbe)# call-policy-set 1

Enters the mode of routing policy set configuration within an SBE entitiy, creating a new policy set if necessary.

Step 5 

first-number-analysis-table table-name

Example:

host1/Admin(config-sbc-sbe-rtgpolicy)#

first-number-analysis-table check_account

Configures the name of the first policy table to process when performing the number analysis stage of policy.

Step 6 

na-src-account-table table-name

Example:

host1/Admin(config-sbc-sbe-rtgpolicy)#

na-src-account-table check_account

Enters the mode for configuring a number analysis table within the context of an SBE policy set with the entries of the table matching the source account.

Step 7 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable)# entry 1

Enters the mode for configuring an entry in a number analysis table, creating the entry, if necessary.

Step 8 

match-account key

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# match-account hotel_foo

Configures the match value of an entry in the number analysis table. The key argument is a string used to match the source account.

Step 9 

action [next-table goto-table-name | accept | reject]





Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# action next-table hotel_dialing_plan

Configures the action of an entry in a number analysis table. Possible actions are:

Configure the name of the next number analysis table to process if the event matches this entry using the next-table keyword and the goto-table-name argument.

Configure the call to be accepted if it matches the entry in the table using the accept keyword.

Configure the call to be rejected if it matches the entry in the table using the reject keyword.

Step 10 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# entry 2

Enters the mode for configuring an entry in a number analysis table, creating the entry, if necessary.

Step 11 

match-account key

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# match-account hotel_bar

Configures the match value of an entry in the number analysis table. The key argument is a string used to match the source account.

Step 12 

action [next-table goto-table-name | accept | reject]





Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# action next-table hotel_dialing_plan

Configures the action of an entry in a number analysis table. Possible actions are:

Configure the name of the next number analysis table to process if the event matches this entry using the next-table keyword and the goto-table-name argument.

Configure the call to be accepted if it matches the entry in the table using the accept keyword.

Configure the call to be rejected if it matches the entry in the table using the reject keyword.

Step 13 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# entry 3

Enters the mode for configuring an entry in a number analysis table, creating the entry, if necessary.

Step 14 

match-account internal

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# match-account internal

Configures the match value of an entry in the number analysis table. The key argument is a string used to match the source account.

Step 15 

action [next-table goto-table-name | accept | reject]






Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# action accept

Configures the action of an entry in a number analysis table. Possible actions are:

Configure the name of the next number analysis table to process if the event matches this entry using the next-table keyword and the goto-table-name argument.

Configure the call to be accepted if it matches the entry in the table using the accept keyword.

Configure the call to be rejected if it matches the entry in the table using the reject keyword.

Step 16 

na-dst-prefix-table table-name

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-natable-en try)#

na-dst-prefix-table hotel_dialing_plan

Enters the mode for configuring a number analysis table within the context of an SBE policy set with the entries of the table matching the start of the dialed number.

Step 17 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# entry 1

Enters the mode for configuring an entry in a number analysis table, creating the entry, if necessary.

Step 18 

match-prefix key

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# match-prefix XXX

Configures the match value of an entry in the number analysis table. The key argument is a string used to match the start of the dialed number.

Step 19 

category category-name

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# category internal_call

Specifies the category of an entry in a number analysis table.

Step 20 

action [next-table goto-table-name | accept | reject]






Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# action accept

Configures the action of an entry in a number analysis table. Possible actions are:

Configure the name of the next number analysis table to process if the event matches this entry using the next-table keyword and the goto-table-name argument.

Configure the call to be accepted if it matches the entry in the table using the accept keyword.

Configure the call to be rejected if it matches the entry in the table using the reject keyword.

Step 21 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# entry 2

Enters the mode for configuring an entry in a number analysis table, creating the entry, if necessary.

Step 22 

match-prefix key

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# match-prefix 9XXX

Configures the match value of an entry in the number analysis table. The key argument is a string used to match the start of the dialed number.

Step 23 

category category-name

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# category external_call

Specifies the category of an entry in a number analysis table.

Step 24 

action [next-table goto-table-name | accept | reject]







Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# action accept

Configures the action of an entry in a number analysis table. Possible actions are:

Configure the name of the next number analysis table to process if the event matches this entry using the next-table keyword and the goto-table-name argument.

Configure the call to be accepted if it matches the entry in the table using the accept keyword.

Configure the call to be rejected if it matches the entry in the table using the reject keyword.

Step 25 

exit

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# exit

Exits from the entry mode to the natable mode.

Step 26 

exit

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable)# exit

Exits from the natable mode to the rtgpolicy mode.

Step 27 

show

Example:

host1/Admin(config-sbc-sbe-rtgpolicy)# show

Displays the current configuration information.

Configuring Routing Tables

See the following sections:

Configuring a Destination Address Table

Configuring the Destination, Source Domain, and Carrier ID Tables

Configuring the Category Table

Configuring the Least Cost Table

Configuring Time-Based Tables

Configuring Regular Expression-Based Tables

Configuring a Destination Address Table

This task configures a dst-address routing table.

SUMMARY STEPS

1. configure

2. sbc service-name

3. sbe

4. call-policy-set policy-set-id

5. first-call-routing-table table-name

6. rtg-dst-address-table table-name

7. entry entry-id

8. match-address key [regex]

9. prefix

10. dst-adjacency target-adjacency

11. action [next-table goto-table-name | complete | reject]

12. exit

13. entry entry-id

14. match-address key [regex]

15. prefix

16. dst-adjacency target-adjacency

17. action [next-table goto-table-name | complete | reject]

18. exit

19. entry entry-id

20. match-address key [regex]

21. prefix

22. dst-adjacency target-adjacency

23. action [next-table goto-table-name | complete | reject]

24. exit

25. entry entry-id

26. match-address key [regex]

27. prefix

28. dst-adjacency target-adjacency

29. action [next-table goto-table-name | complete | reject]

30. exit

31. complete name

32. show

DETAILED STEPS

 
Command or Action
Purpose

Step 1 

configure

Example:

host1/Admin# configure

Enables global configuration mode.

Step 2 

sbc service-name

Example:

host1/Admin(config)# sbc mysbc

Enters the mode of an SBC service.

Use the service-name argument to define the name of the service.

Step 3 

sbe

Example:

host1/Admin(config-sbc)# sbe

Enters the mode of an SBE entity within an SBC service.

Step 4 

call-policy-set policy-set-id

Example:

host1/Admin(config-sbc-sbe)# call-policy-set 1

Enters the mode of routing policy set configuration within an SBE entity.

Step 5 

first-call-routing-table table-name

Example:

host1/Admin(config-sbc-sbe-rtgpolicy)# first-call-routing-table ROUTE-ON-DEST-NUM

Configures the name of the first policy table to process when performing the routing stage of policy for new-call events.

Step 6 

rtg-dst-address-table table-name

Example:

host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-dst-address-table MyRtgTable

Enters the configuration mode of a routing table within the context of an SBE policy set with the entries of the table matching the dialed number (after number analysis).

Step 7 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 1

Enters the mode for configuring an entry in a routing table, creating the entry, if necessary.

Step 8 

match-address key [regex]

















Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entr y)# match-address 334

Configures the match value of an entry in a routing table.

To create a routing table that routes on user name, use the existing rtg-dst-address-table or rtg-src-address-table and put a textual value in the match-address field.

The SBC skips number analysis and performs only routing when the SIP message contains a user name. The SBC decides that an address is a user name (as opposed to a phone number) if it contains any character other than: \n\n0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, plus, hyphen, period, open-round-bracket, close-round-bracket.

When the SBC has decided that an address is a user name, the "X" in the routing tables is treated not as a wildcard character, but as a literal "X". For example, the match value of "X" matches the username "X", but not "A".

Step 9 

prefix

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entr y)# prefix

Configures the match-address of this entry to match the start of the destination address.

Step 10 

dst-adjacency target-adjacency

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entr y)# dst-adjacency SIP-AS540-PSTN-GW2

Configures the destination adjacency of an entry in a routing table.

Step 11 

action [next-table goto-table-name | complete | reject]






Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entr y)# action complete

Configures the action to take if this routing entry is chosen. Possible actions are:

Set the name of the next routing table to process if the event matches this entry. This is done using the next-table keyword and the goto-table-name argument.

Complete the action using the complete keyword.

Reject the indicated action using the reject keyword.

Step 12 

exit

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entr y)# exit

Exits the entry mode to the rtgtable mode.

Step 13 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 2

Enters the mode for configuring an entry in a routing table, creating the entry, if necessary.

Step 14 

match-address key [regex]

















Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entr y)# match-address 434

Configures the match value of an entry in a routing table.

To create a routing table that routes on user name, use the existing rtg-dst-address-table or rtg-src-address-table and put a textual value in the match-address field.

The SBC skips number analysis and performs only routing when the SIP message contains a user name. The SBC decides that an address is a user name (as opposed to a phone number) if it contains any character other than: \n\n0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, plus, hyphen, period, open-round-bracket, close-round-bracket.

When the SBC has decided that an address is a user name, the "X" in the routing tables is treated not as a wildcard character, but as a literal "X". For example, the match value of "X" matches the username "X", but not "A".

Step 15 

prefix

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entr y)# prefix

Configures the match-address of this entry to match the start of the destination address.

Step 16 

dst-adjacency target-adjacency

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entr y)# dst-adjacency SIP-AS540-PSTN-GW1

Configures the destination adjacency of an entry in a routing table.

Step 17 

action [next-table goto-table-name | complete | reject]






Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entr y)# action complete

Configures the action to take if this routing entry is chosen. Possible actions are:

Set the name of the next routing table to process if the event matches this entry. This is done using the next-table keyword and the goto-table-name argument.

Complete the action using the complete keyword.

Reject the indicated action using the reject keyword.

Step 18 

exit

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entr y)# exit

Exits the entry mode to the rtgtable mode.

Step 19 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 3

Enters the mode for configuring an entry in a routing table, creating the entry, if necessary.

Step 20 

match-address key [regex]

















Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entr y)# match-address 354

Configures the match value of an entry in a routing table.

To create a routing table that routes on user name, use the existing rtg-dst-address-table or rtg-src-address-table and put a textual value in the match-address field.

The SBC skips number analysis and performs only routing when the SIP message contains a user name. The SBC decides that an address is a user name (as opposed to a phone number) if it contains any character other than: \n\n0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, plus, hyphen, period, open-round-bracket, close-round-bracket.

When the SBC has decided that an address is a user name, the "X" in the routing tables is treated not as a wildcard character, but as a literal "X". For example, the match value of "X" matches the username "X", but not "A".

Step 21 

prefix

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entr y)# prefix

Configures the match-address of this entry to match the start of the destination address.

Step 22 

dst-adjacency target-adjacency

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entr y)# dst-adjacency H323-AS540-PSTN-GW2

Configures the destination adjacency of an entry in a routing table.

Step 23 

action [next-table goto-table-name | complete | reject]






Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entr y)# action complete

Configures the action to take if this routing entry is chosen. Possible actions are:

Set the name of the next routing table to process if the event matches this entry. This is done using the next-table keyword and the goto-table-name argument.

Complete the action using the complete keyword.

Reject the indicated action using the reject keyword.

Step 24 

exit

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entr y)# exit

Exits the entry mode to the rtgtable mode.

Step 25 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 4

Enters the mode for configuring an entry in a routing table, creating the entry, if necessary.

Step 26 

match-address key [regex]

















Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entr y)# match-address 454

Configures the match value of an entry in a routing table.

To create a routing table that routes on user name, use the existing rtg-dst-address-table or rtg-src-address-table and put a textual value in the match-address field.

The SBC skips number analysis and performs only routing when the SIP message contains a user name. The SBC decides that an address is a user name (as opposed to a phone number) if it contains any character other than: \n\n0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, plus, hyphen, period, open-round-bracket, close-round-bracket.

When the SBC has decided that an address is a user name, the "X" in the routing tables is treated not as a wildcard character, but as a literal "X". For example, the match value of "X" matches the username "X", but not "A".

Step 27 

prefix

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entr y)# prefix

Configures the match-address of this entry to match the start of the destination address.

Step 28 

dst-adjacency target-adjacency

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entr y)# dst-adjacency H323-AS540-PSTN-GW1

Configures the destination adjacency of an entry in a routing table.

Step 29 

action [next-table goto-table-name | complete | reject]






Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entr y)# action complete

Configures the action to take if this routing entry is chosen. Possible actions are:

Set the name of the next routing table to process if the event matches this entry. This is done using the next-table keyword and the goto-table-name argument.

Complete the action using the complete keyword.

Reject the indicated action using the reject keyword.

Step 30 

exit

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entr y)# exit

Exits the entry mode to the rtgtable mode.

Step 31 

complete name

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# complete

Completes the full routing policy set when you have committed the full set.

Step 32 

show

Example:

host1/Admin(config-sbc-sbe-rtgpolicy)# show

Displays the current configuration information.

Configuring the Destination, Source Domain, and Carrier ID Tables

This task configures dst-domain and src-domain and carrier ID routing tables.

SUMMARY STEPS

1. configure

2. sbc service-name

3. sbe

4. call-policy-set policy-set-id

5. rtg-src-domain-table table-name | rtg-dst-domain-table table-name | rtg-carrier-id-table table-name

6. entry entry-id

7. match-domain key [regex] | match-cic cic

8. edit action

9. edit-cic {del-prefix pd | del-suffix sd | add-prefix pa | replace ds}

10. action [next-table goto-table-name | complete | reject]

11. dst-adjacency target-adjacency

12. exit

DETAILED STEPS

 
Command or Action
Purpose

Step 1 

configure

Example:

host1/Admin# configure

Enables global configuration mode.

Step 2 

sbc service-name

Example:

host1/Admin(config)# sbc mysbc

Enters the mode of an SBC service.

Use the service-name argument to define the name of the service.

Step 3 

sbe

Example:

host1/Admin(config-sbc)# sbe

Enters the mode of an SBE entity within an SBC service.

Step 4 

call-policy-set policy-set-id

Example:

host1/Admin(config-sbc-sbe)# call-policy-set 1

Enters the mode of routing policy set configuration within an SBE entity.

Step 5 

rtg-src-domain-table table-name | rtg-dst-domain-table table-name |

rtg-carrier-id-table table-name



Example:

host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-src-domain-table MyRtgTable

Enters the configuration mode of a routing table (creating a new table if necessary) whose entries match the source or destination domains, or carrier ID respectively.

You are not allowed to enter the submode of routing table configuration in the context of the active policy set.

The no version of the command destroys the routing table. A routing table may not be destroyed if it is in the context of the active policy set.

Step 6 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable)# entry 1

Enters the mode for configuring an entry in a routing table, creating the entry, if necessary.

entry-id is a number that uniquely identifies an entry in the newly created routing table.

Step 7 

match-domain key [regex] | match-cic cic

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable-entry)# match-domain ^cisco.com

Creates or modifies the matching domain or carrier id code (CIC) of an entry in a routing table.

key is regular expression, not just a string.

cic is the carrier ID that matches the entry in a routing table.

Step 8 

edit action





















Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable-entry)# edit del-prefix 1

Configures a dial-string manipulation action in the routing table. You are not allowed to do this if the table is part of the active policy set.

The no version of the command deletes the edit action of the given entry in the routing table.

The edit command can be set to the following values:

del-prefix pd—Delete prefix pd, where pd is a positive integer specifying a number of digits to delete from the front of the dialed digit string.

del-suffix sd—Delete suffix sd, where sd is a positive integer specifying a number of digits to delete from the end of the dialed digit string.

add-prefix pa—Add prefix pa, where pa is a string of digits to add to the front of the dialed string.

replace ds—Replace ds, where ds is a string of digits that replaces the dialed string.

In the example to the left, the edit command sets entry 1 to delete 1 digit from the first beginning of the dialed string in the routing table "MyRtgTable".

Step 9 

edit-cic {del-prefix pd | del-suffix sd | add-prefix pa | replace ds}






















Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# edit-cic del-prefix 1

Configures a carrier identification code (CIC) manipulation action in any routing table.

You are not allowed to do this if the table is part of the active policy set.

The no version of the command destroys the match value.

del-prefix pd: A positive integer specifying a number of digits to delete from the front of the carrier ID string.

del-suffix sd: A positive integer specifying a number of digits to delete from the end of the carrier ID string.

add-prefix pa: A string of digits to add to the front of the carrier ID string.

replace ds: A string of digits to replace the carrier ID string with.

The following command sets entry 2 to delete the first digit of the carrier ID in the current routing table.

If you wish to remove the carrier ID entirely from outgoing messages, he should specify a replacement string of 0 or a prefix deletion string of 4. For example,

edit-cic del-prefix 4   OR
edit-cic replace 0

Step 10 

action [next-table goto-table-name | complete | reject]



Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable-entry)# action complete

Configures the action to take if this routing entry is chosen. Possible actions are:

Set the name of the next routing table to process if the event matches this entry. This is done using the next-table keyword and the goto-table-name argument.

Complete the action using the complete keyword.

Reject the indicated action using the reject keyword.

Step 11 

dst-adjacency target-adjacency

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable-entry)# dst-adjacency SIP-AS540-PSTN-GW2

Configures the destination adjacency of an entry in a routing table.

Step 12 

exit

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable-entry)# exit

Exits the current mode of the configuration.

Configuring the Category Table

This task configures dst-domain and src-domain and carrier ID routing tables.

SUMMARY STEPS

1. configure

2. sbc service-name

3. sbe

4. call-policy-set policy-set-id

5. rtg-category-table table-name

6. entry entry-id

7. match-category word

8. action [next-table goto-table-name | complete | reject]

9. exit

DETAILED STEPS

 
Command or Action
Purpose

Step 1 

configure

Example:

host1/Admin# configure

Enables global configuration mode.

Step 2 

sbc service-name

Example:

host1/Admin(config)# sbc mysbc

Enters the mode of an SBC service.

Use the service-name argument to define the name of the service.

Step 3 

sbe

Example:

host1/Admin(config-sbc)# sbe

Enters the mode of an SBE entity within an SBC service.

Step 4 

call-policy-set policy-set-id

Example:

host1/Admin(config-sbc-sbe)# call-policy-set 1

Enters the mode of routing policy set configuration within an SBE entity.

Step 5 

rtg-category-table table-name





Example:

host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-category-table MyRtgTable

Enters the submode of configuration of a routing table whose entries match on the category within the context of an SBE policy set.

Step 6 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable)# entry 1

Enters the mode for configuring an entry in a routing table, creating the entry, if necessary.

The value of the entry-id argument is a number that uniquely identifies an entry in the newly created routing table.

Step 7 

match-category word


Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-e ntry)# match-category emergency

Configures the match value of an entry in a routing table matching on the category.

Step 8 

action [next-table goto-table-name | complete | reject]




Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable-entry)# action complete

Configures the action to take if this routing entry is chosen. Possible actions are:

Set the name of the next routing table to process if the event matches this entry. This is done using the next-table keyword and the goto-table-name argument.

Complete the action using the complete keyword.

Reject the indicated action using the reject keyword.

Step 9 

exit

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable-entry)# exit

Exits the current mode of the configuration.

Configuring the Least Cost Table

This task configures least cost routing tables. With least cost routing, you configure a routing table based on the user-configured precedence (cost) of the entries.

SUMMARY STEPS

1. configure

2. sbc service-name

3. sbe

4. call-policy-set policy-set-id

5. rtg-least-cost-table table-name

6. entry entry-id

7. cost cost

8. weight weight

9. dst-adjacency target-adjacency

10. action complete

11. exit

DETAILED STEPS

 
Command or Action
Purpose

Step 1 

configure

Example:

host1/Admin# configure

Enables global configuration mode.

Step 2 

sbc service-name

Example:

host1/Admin(config)# sbc mysbc

Enters the mode of an SBC service.

Use the service-name argument to define the name of the service.

Step 3 

sbe

Example:

host1/Admin(config-sbc)# sbe

Enters the mode of an SBE entity within an SBC service.

Step 4 

call-policy-set policy-set-id

Example:

host1/Admin(config-sbc-sbe)# call-policy-set 1

Enters the mode of routing policy set configuration within an SBE entity.

Step 5 

rtg-least-cost-table table-name





Example:

host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-least-cost-table MyRtgTable

Enters the submode of configuration of a routing table whose entries match on the least cost within the context of an SBE policy set.

Step 6 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable)# entry 1

Enters the mode for configuring an entry in a routing table, creating the entry, if necessary.

entry-id is a number that uniquely identifies an entry in the newly created routing table.

Step 7 

cost cost


Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-e ntry)# cost 50

Assigns a cost to the route.

Step 8 

weight weight


Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-e ntry)# weight 33

Assigns a weight to the route.

Step 9 

dst-adjacency target-adjacency

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable-entry)# dst-adjacency SIP-AS540-PSTN-GW2

Configures the destination adjacency of an entry in a routing table.

Step 10 

action complete

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable-entry)# action complete

Specifies that routing is complete when an entry matches this policy.

Step 11 

exit

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable-entry)# exit

Exits the current mode of the configuration.

Configuring the Weighted Table

This task configures weighted routing tables. If two or more entries with equal cost exist, and are selected for routing, then calls are distributed based on the weight configured.


Note The selection of routes between several equal cost routes is a weighted random selection. For each call, a stateless random decision is made as to which adjacency to use. For a small sample size, the actual distribution may deviate from the specified distribution. As the sample size increases in number, the SBC is more likely to achieve the specified distribution. See Weighted Routing: Example.


SUMMARY STEPS

1. configure

2. sbc service-name

3. sbe

4. call-policy-set policy-set-id

5. rtg-least-cost-table table-name

6. entry entry-id

7. cost cost

8. weight weight

9. dst-adjacency

10. action complete

11. exit

DETAILED STEPS

 
Command or Action
Purpose

Step 1 

configure

Example:

host1/Admin# configure

Enables global configuration mode.

Step 2 

sbc service-name

Example:

host1/Admin(config)# sbc mysbc

Enters the mode of an SBC service.

Use the service-name argument to define the name of the service.

Step 3 

sbe

Example:

host1/Admin(config-sbc)# sbe

Enters the mode of an SBE entity within an SBC service.

Step 4 

call-policy-set policy-set-id

Example:

host1/Admin(config-sbc-sbe)# call-policy-set 1

Enters the mode of routing policy set configuration within an SBE entity.

Step 5 

rtg-least-cost-table table-name





Example:

host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-least-cost-table MyRtgTable

Enters the submode of configuration of a routing table whose entries match on the least cost within the context of an SBE policy set.

Step 6 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable)# entry 1

Enters the mode for configuring an entry in a routing table, creating the entry, if necessary.

entry-id is a number that uniquely identifies an entry in the newly created routing table.

Step 7 

cost cost


Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-e ntry)# cost 50

Assigns a cost to the route.

Step 8 

weight weight


Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-e ntry)# weight 33

Assigns a weight to the route.

Step 9 

dst-adjacency target-adjacency

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable-entry)# dst-adjacency SIP-AS540-PSTN-GW2

Configures the destination adjacency of an entry in a routing table.

Step 10 

action complete

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable-entry)# action complete

Specifies that routing is complete when an entry matches this policy

Step 11 

exit

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable-entry)# exit

Exits the current mode of the configuration.

Configuring Time-Based Tables

This task configures dst-domain and src-domain and carrier ID routing tables.

SUMMARY STEPS

1. configure

2. sbc service-name

3. sbe

4. call-policy-set policy-set-id

5. rtg-time-table table-name

6. entry entry-id

7. match-time {[date yr year_low year_high mon month_low month_high day date_low date_high] [dow DoW_low DoW_high] [tod hr hour_low hour_high min minute_low minute_high]}

8. precedence precedence

9. dst-adjacency dst_adj

10. action [next-table goto-table-name | complete | reject ]

11. exit

DETAILED STEPS

 
Command or Action
Purpose

Step 1 

configure

Example:

host1/Admin# configure

Enables global configuration mode.

Step 2 

sbc service-name

Example:

host1/Admin(config)# sbc mysbc

Enters the mode of an SBC service.

Use the service-name argument to define the name of the service.

Step 3 

sbe

Example:

host1/Admin(config-sbc)# sbe

Enters the mode of an SBE entity within an SBC service.

Step 4 

call-policy-set policy-set-id

Example:

host1/Admin(config-sbc-sbe)# call-policy-set 1

Enters the mode of routing policy set configuration within an SBE entity.

Step 5 

rtg-time-table table-name

Example:

host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-time-table MyRtgTable

Enters the submode of configuration of a routing table whose entries match on the time within the context of an SBE policy set.

Step 6 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable)# entry 1

Enters the mode for configuring an entry in a routing table, creating the entry, if necessary.

entry-id is a number that uniquely identifies an entry in the newly created routing table.

Step 7 

match-time {[date yr year_low year_high mon month_low month_high day date_low date_high] [dow DoW_low DoW_high] [tod hr hour_low hour_high min minute_low minute_high]}




























Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-e ntry)# match-time date yr 2006 2020 mon 1 12 day 1 31

Configures the match time of an entry. A string used to match the time and can include one or more of the following specifiers:

date_low - date_high—the inclusive range of dates (1-31).

date—date

day—date

DoW_low - DoW_high—the inclusive range of days (Sun-Mon).

dow—day of the week

hr—hour

hour_low - hour_high—the inclusive range of hours (0-23).

minute_low - minute_high—the inclusive range of minutes (0-59).

min—minute

mon—month

month_low - month_high—the inclusive range of months (1-12).

tod—time of day

yr—year

year_low - year_high—the inclusive range of years.

The high values are optional and if unspecified are set equal to the low values.

Step 8 

precedence precedence

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-e ntry)# precedence 0

Configures the precedence of the routing entry.

Step 9 

action [next-table goto-table-name | complete | reject]




Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable-entry)# action complete

Configures the action to take if this routing entry is chosen. Possible actions are:

Set the name of the next routing table to process if the event matches this entry. This is done using the next-table keyword and the goto-table-name argument.

Complete the action using the complete keyword.

Reject the indicated action using the reject keyword.

Step 10 

dst-adjacency dst_adj

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable-entry)# dst-adjacency SIP-AS540-PSTN-GW2

Configures the destination adjacency of an entry in a routing table.

Step 11 

exit

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable-entry)# exit

Exits the current mode of the configuration.

Configuring Regular Expression-Based Tables

This task configures dst-domain and src-domain and carrier ID routing tables.

SUMMARY STEPS

1. configure

2. sbc service-name

3. sbe

4. call-policy-set policy-set-id

5. description description

6. first-call-routing-table table-name

7. rtg-dst-domain-table table-name

8. entry entry-id

9. action [next-table goto-table-name | complete | reject ]

10. match-domain key [regex]

11. complete

DETAILED STEPS

 
Command or Action
Purpose

Step 1 

configure

Example:

host1/Admin# configure

Enables global configuration mode.

Step 2 

sbc service-name

Example:

host1/Admin(config)# sbc mysbc

Enters the mode of an SBC service.

Use the service-name argument to define the name of the service.

Step 3 

sbe

Example:

host1/Admin(config-sbc)# sbe

Enters the mode of an SBE entity within an SBC service.

Step 4 

call-policy-set policy-set-id

Example:

host1/Admin(config-sbc-sbe)# call-policy-set 1

Enters the mode of routing policy set configuration within an SBE entity.

Step 5 

description description

Example:

host1/Admin(config-sbc-sbe-adj-h323)# description dst domain route

Configures descriptive text for a policy set.

Step 6 

first-call-routing-table table-name

Example:

host1/Admin(config-sbc-sbe-rtgpolicy)# first-call-routing-table testDstDomainNameRtgTabl

Configures the name of the first policy table to process when performing the routing stage of policy for new-call events.

Step 7 

rtg-dst-domain-table table-name

Example:

host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-dst-domain-table MyRtgTable

Enters the configuration submode of a routing table with entries that match the destination domain.

Step 8 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable)# entry 1

Enters the mode for configuring an entry in a routing table, creating the entry, if necessary.

entry-id is a number that uniquely identifies an entry in the newly created routing table.

Step 9 

action [next-table goto-table-name | complete | reject]




Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable-entry)# action complete

Configures the action to take if this routing entry is chosen. Possible actions are:

Set the name of the next routing table to process if the event matches this entry. This is done using the next-table keyword and the goto-table-name argument.

Complete the action using the complete keyword.

Reject the indicated action using the reject keyword.

Step 10 

match-domain key [regex]

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable-entry)# match-domain ^cisco.com

Creates or modifies the match domain of an entry in a routing table matching on the source domain.

Step 11 

complete

Example:

host1/Admin(config-sbc-sbe-rtgpolicy)# complete

Completes the CAC policy set when you have committed the full set.

Configuring Number Manipulation

This task enables you to specify various number manipulations that can be performed on a dialed number after a destination adjacency has been selected.

SUMMARY STEPS

1. configure

2. sbc service-name

3. sbe

4. call-policy-set policy-set-id

5. rtg-src-address-table table-id

6. rtg-src-adjacency-table table-id

7. rtg-src-account-table table-id

8. rtg-round-robin-table table-id

9. rtg-carrier-id-table table-id

10. rtg-dst-address-table table-id

11. entry entry-id

12. edit action

13. edit-cic {del-prefix pd | del-suffix sd | add-prefix pa | replace ds}

14. edit-src [del-prefix pd] | [del-suffix sd] | [add-prefix pa] | [replace ds]

15. exit

DETAILED STEPS

 
Command or Action
Purpose

Step 1 

configure

Example:

host1/Admin# configure

Enables global configuration mode.

Step 2 

sbc service-name

Example:

host1/Admin(config)# sbc mysbc

Enters the mode of an SBC service.

Use the service-name argument to define the name of the service.

Step 3 

sbe

Example:

host1/Admin(config-sbc)# sbe

Enters the mode of an SBE entity within an SBC service.

Step 4 

call-policy-set policy-set-id

Example:

host1/Admin(config-sbc-sbe)# call-policy-set 1

Enters the mode of the routing policy set configuration in the SBE mode, creating a new policy set if necessary

Step 5 

rtg-src-address-table table-id






Example:

host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-src-address-table MySrcAddressTable

Enters the configuration mode of a routing table (creating one if necessary) whose entries match the dialer's number or SIP user name within the context of an SBE policy set.

You are not allowed to enter the submode of routing table configuration in the context of the active policy set.

The no version of the command destroys the routing table. A routing table may not be destroyed if it is in the context of the active policy set.

Step 6 

rtg-src-adjacency-table table-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-src-adjacency-table MySrcAdjTable

Enters the configuration mode of a routing table (creating one if necessary) within the context of an SBE policy set whose entries match the source adjacency.

Step 7 

rtg-src-account-table table-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-src-account-table MySrcAccTable

Enters the configuration mode of a routing table (creating one if necessary) whose entries match the source account within the context of an SBE policy set.

Step 8 

rtg-round-robin-table table-id



Example:

host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-round-robin-table MyRobinTable

Enters the configuration mode of a policy table, whose events do not have any match-value parameters, nor next-table actions. Its actions are restricted to setting the destination adjacency. A group of adjacencies are chosen for an event if an entry in a routing table matches that event and points to a round-robin adjacency table in the next-table action.

Step 9 

rtg-carrier-id-table table-id






Example:

host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-carrier-id-table MyCarrierIdTable

Enters the configuration mode of a routing table (creating one if necessary) within the context of an SBE policy set whose entries match the carrier ID.

You are not allowed to enter the mode of the routing table configuration in the context of the active policy set.

The no version of the command destroys the routing table. A routing table may not be destroyed if it is in the context of the active policy set.

Step 10 

rtg-dst-address-table table-id







Example:

host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-dst-address-table MyRtgTable

Enters the configuration mode of a routing table (creating one if necessary) within the context of an SBE policy set whose entries match the dialed number (after number analysis) or SIP user name.

You are not allowed to enter the submode of routing table configuration in the context of the active policy set.

The no version of the command destroys the routing table. A routing table may not be destroyed if it is in the context of the active policy set.

Step 11 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable)# entry 1

Enters the mode for configuring an entry in a routing table, creating the entry if necessary.

Step 12 

edit action





















Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable-entry)# edit del-prefix 1

Configures a dial-string manipulation action in the routing table. You are not allowed to do this if the table is part of the active policy set.

The no version of the command deletes the edit action of the given entry in the routing table.

The edit command can be set to the following values:

del-prefix pd—Delete prefix pd, where pd is a positive integer specifying a number of digits to delete from the front of the dialed digit string.

del-suffix sd—Delete suffix sd, where sd is a positive integer specifying a number of digits to delete from the end of the dialed digit string.

add-prefix pa—Add prefix pa, where pa is a string of digits to add to the front of the dialed string.

replace ds—Replace ds, where ds is a string of digits that replaces the dialed string.

In the example to the left, the edit command sets entry 1 to delete 1 digit from the first beginning of the dialed string in the routing table "MyRtgTable".

Step 13 

edit-cic {del-prefix pd | del-suffix sd | add-prefix pa | replace ds}





















Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# edit-cic del-prefix 1

Configures a CIC manipulation action in any routing table.

You are not allowed to do this if the table is part of the active policy set.

The no version of the command destroys the match value.

del-prefix pd: A positive integer specifying a number of digits to delete from the front of the carrier ID string.

del-suffix sd: A positive integer specifying a number of digits to delete from the end of the carrier ID string.

add-prefix pa: A string of digits to add to the front of the carrier ID string.

replace ds: A string of digits to replace the carrier ID string with.

The following command sets entry 2 to delete the first digit of the carrier ID in the current routing table.

If you wish to remove the carrier ID entirely from outgoing messages, you should specify a replacement string of 0 or a prefix deletion string of 4. For example,

edit-cic del-prefix 4   OR
edit-cic replace 0

Step 14 

edit-src [del-prefix pd] | [del-suffix sd] | [add-prefix pa] | [replace ds]














Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
natable-entry)# edit-src del-prefix 1

Configures a source number manipulation action in the routing table.

You are not allowed to do this if the table is part of the active policy set.

The no version of the command destroys the match value.

del-prefix pd: A positive integer specifying a number of digits to delete from the front of the carrier ID string.

del-suffix sd: A positive integer specifying a number of digits to delete from the end of the carrier ID string.

add-prefix pa: A string of digits to add to the front of the carrier ID string.

replace ds: A string of digits to replace the carrier ID string with.

Step 15 

exit

Example:

host1/Admin(config-sbc-sbe-rtgpolicy-
rtgtable-entry)# exit

Exits the entry mode of the configuration.

Configuring Hunting and MultiARQ Hunting

This task enables SBC to hunt for other routes or destination adjacencies in case of a failure.

SUMMARY STEPS

1. configure

2. sbc service-name

3. sbe

4. sip | h323 | adjacency sip adjacency-name | adjacency h323 adjacency-name

5. hunting-trigger error-codes

6. exit

7. show services sbc service-name sbe h323 | sip hunting-trigger

DETAILED STEPS

 
Command or Action
Purpose

Step 1 

configure

Example:

host1/Admin# configure

Enables global configuration mode.

Step 2 

sbc service-name

Example:

host1/Admin(config)# sbc mysbc

Enters the mode of an SBC service.

Use the service-name argument to define the name of the service.

Step 3 

sbe

Example:

host1/Admin(config-sbc)# sbe

Enters the mode of an SBE entity within an SBC service.

Step 4 

sip | h323 | adjacency sip adjacency-name | adjacency h323 adjacency-name















Example:

host1/Admin(config-sbc-sbe)# sip

Enters one of the following four modes:

sip—The SIP mode comprising all SIP adjacencies where the configured failure return codes cause hunting to occur.

h323—The H.323 mode comprising all h323 adjacencies where the configured failure return codes cause hunting to occur.

adjacency sip—A destination SIP adjacency where the configured failure return codes cause hunting to occur. This command overrides any globally configured retry error codes.

adjacency h323—A destination H.323 adjacency where the configured failure return codes cause hunting to occur. This command overrides any globally configured retry error codes.

Step 5 

hunting-trigger error-codes











































Example:

host1/Admin(config-sbc-sbe-sip)# hunting-trigger 415 480

Configures which failure return codes cause hunting to occur in one of the following four modes:

sip (global SIP scope)

h323 (global H.323 scope)

adjacency sip (destination SIP adjacency)

adjacency h323 (destination H.323 adjacency)

error-codes can have the following values:

In the sip and adjacency sip modes, error-codes represent a space-separated list of SIP numeric error codes. The example to the left configures SIP to retry routing if it receives a "415" (media unsupported) or "480" (temporarily unavailable) error.

In the h323 and adjacency h323 modes, error-codes represent a space-separated list of H.323 textual error codes:

noBandwidth

unreachableDestination

destinationRejection

noPermission

gatewayResources

badFormatAddress

securityDenied

the internally-defined value "connectFailed"

If you type no hunting-trigger, then all error codes are cleared out. If you type no hunting-trigger x y, then just the codes x and y are removed from the configured list.

If you enter hunting-trigger x followed by hunting-trigger y, then x is replaces with y. To set both x and y as hunting triggers, enter hunting-trigger x y.

Note In the case of the adjacency h323 mode, enter the noRetry value to specify that routing should never be retried for this adjacency no matter what failure return code is received.

Step 6 

exit

Example:

host1/Admin(config-sbc-sbe-h323)# exit

Exits the current mode of the configuration.

Step 7 

show services sbc service-name sbe h323|sip hunting-trigger

Example:

host1/Admin# show services sbc mysbc sbe h323|sip hunting-trigger

Shows the H.323 or SIP hunting triggers.

Activating a Routing Policy Set

This task activates a number analysis and routing policy set.

SUMMARY STEPS

1. configure

2. sbc service-name

3. sbe

4. active-call-policy-set policy-set-id

DETAILED STEPS

 
Command or Action
Purpose

Step 1 

configure

Example:

host1/Admin# configure

Enables global configuration mode.

Step 2 

sbc service-name

Example:

host1/Admin(config)# sbc mysbc

Enters the mode of an SBC service.

Use the service-name argument to define the name of the service.

Step 3 

sbe

Example:

host1/Admin(config-sbc)# sbe

Enters the mode of an SBE entity within an SBC service.

Step 4 

active-call-policy-set policy-set-id

Example:

host1/Admin(config-sbc-sbe)# active-call-policy-set 1

Sets the active routing policy set within an SBE entity.

Configuring Call Admission Control Policy Sets and CAC Tables

This optional task configures Call Admission Control policy sets and CAC tables.

SUMMARY STEPS

1. configure

2. sbc service-name

3. sbe

4. cac-policy-set policy-set-id

5. first-cac-scope scope-name

6. first-cac-table table-name

7. cac-table table-name

8. match-type table-type

9. entry entry-id

10. media-bypass-forbid

11. match-value key

12. max-num-calls mnc

13. max-call-rate mcr

14. max-in-call-rate rate

15. max-out-call-rate rate

16. max-bandwidth mbw bwsize

17. callee-privacy callee-priv-setting

18. action [next-table goto-table-name | cac-complete]

19. exit

20. entry entry-id

21. match-value key

22. max-num-calls mnc

23. max-call-rate mcr

24. max-bandwidth mbw bwsize

25. transcode-deny

26. max-regs mr

27. action [next-table goto-table-name | cac-complete]

28. exit

29. exit

30. complete

DETAILED STEPS

 
Command or Action
Purpose

Step 1 

configure

Example:

host1/Admin# configure

Enables global configuration mode.

Step 2 

sbc service-name

Example:

host1/Admin(config)# sbc mysbc

Enters the mode of an SBC service.

Use the service-name argument to define the name of the service.

Step 3 

sbe

Example:

host1/Admin(config-sbc)# sbe

Enters the mode of an SBE entity within an SBC service.

Step 4 

cac-policy-set policy-set-id

Example:

host1/Admin(config-sbc-sbe)# cac-policy-set 1

Enters the mode of CAC policy set configuration within an SBE entity, creating a new policy set if necessary.

Step 5 

first-cac-scope scope-name




























Example:

host1/Admin(config-sbc-sbe-cacpolicy)# first-cac-scope global

Configures the scope at which to begin defining limits when performing the admission control stage of policy.

The scope-name argument configures the scope at which limits should be initially defined. Possible values are:

adj-group

call

dst-account

dst-adj-group

dst-adjacency

dst-number

global

src-account

src-adj-group

arc-adjacency

Features can be enabled or disabled per adjacency group through CAC configuration the same way this is done per individual adjacencies. The scope-names for adjacency groups are:

adj-group

src-adj-group

dst-adj-group

Step 6 

first-cac-table table-name

Example:

host1/Admin(config-sbc-sbe-cacpolicy)# first-cac-table StandardListByAccount

Configures the name of the first policy table to process when performing the admission control stage of policy.

Step 7 

cac-table table-name

Example:

host1/Admin(config-sbc-sbe-cacpolicy)# cac-table StandardListByAccount

Enters the mode for configuration of an admission control table (creating one if necessary) within the context of an SBE policy set.

Step 8 

match-type table-type




































Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable)# match-type dst-account

Configures the match-type of an admission control table within the context of an SBE policy set.

The table-type argument controls the syntax of the match-value fields of the entries in the table. The table types available are:

account

adj-group

adjacency

all

call

category

dst-account

dst-adj-group

dst-adjacency

dst-prefix

event-type

policy-set

src-account

src-adj-group

src-adjacency

src-prefix

sub-category

sub-category-pfx

Step 9 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable)# entry 1

Enters the mode to create or modify an entry in an admission control table.

Step 10 

media-bypass-forbid

Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable-entry)# media-bypass-forbid

Configures whether media-bypass is forbidden for this entry in an admission control table. You are not allowed to do this if the table is part of the active policy set.

Not setting this command or issuing the no version of the command allows media bypass for this entry in the admission control table.

Step 11 

match-value key

Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable-entry)# match-value SIP-CUSTOMER-1

Configures the match-value of an entry in an admission control table.

The key argument is a string used to match events. The format of the key is determined by the match-type of the enclosing table.

Step 12 

max-num-calls mnc

Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable-entry)# max-num-calls 100

Configures the maximum number of calls of an entry in an admission control table.

Step 13 

max-call-rate mcr

Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable-entry)# max-call-rate 20

Configures the maximum number of calls per minute for an entry in an admission control table.

Step 14 

max-in-call-rate rate

Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable-entry)# max-in-call-rate 20

Configures the maximum in-call rate for an entry in an admission control table.

Step 15 

max-out-call-rate rate

Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable-entry)# max-out-call-rate 20

Configures the maximum out-call rate for an entry in an admission control table.

Step 16 

max-bandwidth mbw bwsize













Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable-entry)# max-bandwidth 1000000 bps

Configures the maximum bidirectional bandwidth for an entry in an admission control table. For example, if a max-bandwidth value is configured, the SBC allows half of this value in each direction.

The mbw argument is a positive integer specifying the total maximum rate at which call media should be admitted in both directions (in bytes per second).

The bwsize argument specifies the transfer size to which mbw refers. Possible values are:

bps

Kbps

Mbps

Gbps

Step 17 

callee-privacy [callee-priv-setting]






Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable-entry)# callee-privacy never

Configures the level of privacy processing to perform on messages sent from callee to caller.

The callee_priv_setting argument indicates the specific callee privacy setting. Possible values are:

never—Indicates to never hide identity.

account-boundary—Indicates to hide identity only if caller is different account from callee.

always—Indicates to always hide identity.

Step 18 

action [next-table goto-table-name | cac-complete]

Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable-entry)# action cac-complete

Configures the action to perform after this entry in an admission control table. Possible actions are:

Identify the next CAC table to process using the next-table keyword and the goto-table-name argument.

Stop processing for this scope using the cac-complete keyword.

Step 19 

exit

Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable-entry)# exit

Exits from entry to cactable mode.

Step 20 

entry entry-id

Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable)# entry 2

Enters the mode to create or modify an entry in an admission control table.

Step 21 

match-value key

Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable-entry)# match-value SIP-CUSTOMER-2

Configures the match-value of an entry in an admission control table.

The key argument is a string used to match events. The format of the key is determined by the match-type of the enclosing table.

Step 22 

max-num-calls mnc

Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable-entry)# max-num-calls 110

Configures the maximum number of calls of an entry in an admission control table.

Step 23 

max-call-rate mcr

Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable-entry)# max-call-rate 30

Configures the maximum call rate for an entry in an admission control table.

Step 24 

max-bandwidth mbw bwsize













Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable-entry)# max-bandwidth 2000000 bps

Configures the maximum bidirectional bandwidth for an entry in an admission control table. For example, if a max-bandwidth value is configured, the SBC allows half of this value in each direction.

The mbw argument is a positive integer specifying the total maximum rate at which call media should be admitted in both directions (in bytes per second).

The bwsize argument specifies the transfer size to which mbw refers. Possible values are:

bps

Kbps

Mbps

Gbps

Step 25 

transcode-deny

Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable-entry)# transcode-deny

Forbids transcoding for this entry in an admission control table.

Step 26 

max-regs mr

Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable-entry)# max-regs 500

Configures the maximum call number of subscriber registrations for an entry in an admission control table.

Step 27 

action [next-table goto-table-name | cac-complete]

Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable-entry)# action cac-complete

Configures the action to perform after this entry in an admission control table. Possible actions are:

Identify the next CAC table to process using the next-table keyword and the goto-table-name argument.

Stop processing for this scope using the cac-complete keyword.

Step 28 

exit

Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable-entry)# exit

Exits from entry to cactable mode.

Step 29 

exit

Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable)# exit

Exits from cactable to cacpolicy mode.

Step 30 

complete

Example:

host1/Admin(config-sbc-sbe-cacpolicy-
cactable-entry)# complete

Completes the CAC policy set when you have committed the full set.

Activating a CAC Policy Set

This task activates a CAC policy set.

SUMMARY STEPS

1. configure

2. sbc service-name

3. sbe

4. active-cac-policy-set policy-set-id

DETAILED STEPS

 
Command or Action
Purpose

Step 1 

configure

Example:

host1/Admin# configure

Enables global configuration mode.

Step 2 

sbc service-name

Example:

host1/Admin(config)# sbc mysbc

Enters the mode of an SBC service.

Use the service-name argument to define the name of the service.

Step 3 

sbe

Example:

host1/Admin(config-sbc)# sbe

Enters the mode of an SBE entity within an SBC service.

Step 4 

active-cac-policy-set policy-set-id

Example:

host1/Admin(config-sbc-sbe)# active-cac-policy-set 1

Sets the active CAC policy set within an SBE entity.

Configuration Examples of Implementing Number Analysis

This section provides the following configuration examples:

Configuring Number Validation: Example

Configuring Number Categorization: Example

Configuring Number Validation: Example

The following example shows how to configure number validation for a number analysis table:

host1/Admin# configure
host1/Admin(config)# sbc mySbc 
host1/Admin(config-sbc)# sbe 
host1/Admin(config-sbc-sbe)# call-policy-set 1
host1/Admin(config-sbc-sbe-rtgpolicy)# first-number-analysis-table hotel_table
host1/Admin(config-sbc-sbe-rtgpolicy-natable)# na-dst-prefix-table hotel_table
host1/Admin(config-sbc-sbe-rtgpolicy-natable)# entry 1 
host1/Admin(config-sbc-sbe-rtgpolicy-natable)# match-prefix XXX 
host1/Admin(config-sbc-sbe-rtgpolicy-natable)# action accept
host1/Admin(config-sbc-sbe-rtgpolicy-natable)#  entry 2 
host1/Admin(config-sbc-sbe-rtgpolicy-natable)# match-prefix 9XXX 
host1/Admin(config-sbc-sbe-rtgpolicy-natable)# action accept

Configuring Number Categorization: Example

The following example shows how to configure number categorization for a number analysis table:

host1/Admin# configure
host1/Admin(config)# sbc mySbc 
host1/Admin(config-sbc)# sbe 
host1/Admin(config-sbc-sbe)# call-policy-set 1
host1/Admin(config-sbc-sbe-rtgpolicy)# first-number-analysis-table check-accounts
host1/Admin(config-sbc-sbe-rtgpolicy)# na-src-account-table check_accounts
host1/Admin(config-sbc-sbe-rtgpolicy)# entry 1 
host1/Admin(config-sbc-sbe-rtgpolicy-natable-entry)# match-account hotel_foo 
host1/Admin(config-sbc-sbe-rtgpolicy-natable-entry)# action next-table hotel_dialing_plan
host1/Admin(config-sbc-sbe-rtgpolicy-natable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-natable)# entry 2 
host1/Admin(config-sbc-sbe-rtgpolicy-natable-entry)# match-account hotel_bar 
host1/Admin(config-sbc-sbe-rtgpolicy-natable-entry)# action next-table hotel_dialing_plan
host1/Admin(config-sbc-sbe-rtgpolicy-natable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-natable)# entry 3 
host1/Admin(config-sbc-sbe-rtgpolicy-natable-entry)# match-account internal 
host1/Admin(config-sbc-sbe-rtgpolicy-natable-entry)# action accept
host1/Admin(config-sbc-sbe-rtgpolicy-natable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-natable)# exit
host1/Admin(config-sbc-sbe-rtgpolicy)# na-dst-prefix-table hotel_dialing_plan
host1/Admin(config-sbc-sbe-rtgpolicy-natable)# entry 1 
host1/Admin(config-sbc-sbe-rtgpolicy-natable-entry)# match-prefix XXX 
host1/Admin(config-sbc-sbe-rtgpolicy-natable-entry)# category internal_call 
host1/Admin(config-sbc-sbe-rtgpolicy-natable-entry)# action accept
host1/Admin(config-sbc-sbe-rtgpolicy-natable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-natable)# entry 2
host1/Admin(config-sbc-sbe-rtgpolicy-natable-entry)# match-prefix 9XXX
host1/Admin(config-sbc-sbe-rtgpolicy-natable-entry)# category external_call
host1/Admin(config-sbc-sbe-rtgpolicy-natable-entry)# exit

Configuration Examples of Implementing Call Routing

This section provides the following configuration examples:

Routing with No Load Balancing: Example

Least-Cost Routing: Example

Weighted Routing: Example

Time-Based Routing: Example

Routing with No Load Balancing: Example

host1/Admin# configure
host1/Admin(config)# sbc mySbc 
host1/Admin(config-sbc)# sbe 
host1/Admin(config-sbc-sbe)# call-policy-set 1
host1/Admin(config-sbc-sbe-rtgpolicy)# first-call-routing-table start_routing
host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-dst-address-table start_routing
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match XXX
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# next-table internal_routing
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match XXXX
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# next-table external_routing
host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-src-adjacency-table internal_routing
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match sip_to_foo
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency sip_to_foo
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match sip_to_bar
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency sip_to_bar
host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-dst-address-table external_routing
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match 208111
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency sip_to_foo
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match 208222
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency sip_to_bar
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 3
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match X
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency sip_to_softswitch

Least-Cost Routing: Example

The following example configures a routing table that matches on category and then for each entry routes the call to a different least-cost table to choose the adjacency.

host1/Admin# configure
host1/Admin(config)# sbc mySbc 
host1/Admin(config-sbc)# sbe 
host1/Admin(config-sbc-sbe)# call-policy-set 1
host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-category-table 1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-category internal
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action next-table least_int_cost
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-category external
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action next-table least_ext_cost
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# exit
host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-least-cost-table least_int_cost
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# cost 10
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# cost 50
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# exit
host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-least-cost-table least_ext_cost
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# cost 50
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj3
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# cost 100
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj4
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete

Weighted Routing: Example

In the above example, no two entries in one table have the same cost, so the weight parameter is left at the default of 1. If two or more entries with equal cost exist, and are selected for routing, then calls are distributed based on the weight configured (weight being the relative weight of an entry with respect to the lowest weight in the table). For example, if entry1, entry2, and entry3 are equal cost and have weights of 1, 2, and 4, respectively, entry2 will route twice the number of calls as entry1, and entry3 will route four times the number of calls as entry1.

In the following example, all calls are routed to entry 1, because it has the lowest cost. However, if routing fails, the remaining three entries all have the same cost, so the weight parameters determine which entry is picked. Eighty percent of calls will be routed to SipAdj2 by entry 2, and the remaining 20 percent will be evenly divided between SipAdj3 and SipAdj4 (weights of entry 3 and entry 4 are left at a default of 1).

host1/Admin# configure
host1/Admin(config)# sbc mySbc 
host1/Admin(config-sbc)# sbe      
host1/Admin(config-sbc-sbe)# call-policy-set 1
host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-least-cost-table table1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# cost 10
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# cost 50
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# weight 8
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 3
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# cost 50
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj3
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 4
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# cost 50
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj4
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete

Note The selection of routes between several equal cost routes is a weighted random selection. For each call, a stateless random decision is made as to which adjacency to use. For example, in the configuration above, SipAdj2, SipAdj3, and SipAdj4, would be selected with a probability of 80%, 10%, and 10%, respectively. An implication of this is that the actual distribution may deviate from the specified distribution, especially for a small sample size. For example, with 10 calls, you may see 7 calls routed through SipAdj2, 2 calls routed through SipAdj3, and 1 call routed through SipAdj4, instead of the expected 8:1:1 distribution. However, as the sample size increases, the actual distribution converges towards the specified distribution. For a large number of calls (on the order of 1000), there is a very good chance that the SBC achieves the specified distribution.


Time-Based Routing: Example

The following example shows two entries, one that routes traffic to Adj1 at all times and a second with a higher precedence that routes traffic to Adj2 if the time is between 9 AM and 6 PM on a weekday. When the two time periods overlap, the one with the higher precedence is chosen.

The two times ranges in entry 1 and entry 2 overlap. In this case, a call made between 9 AM to 6 PM on weekdays matches on both the entries but entry 2 is preferred due to its higher precedence.

If multiple ranges are specified as in entry 2, the SBC will match the entry only during the intersection of the ranges. For example, entry 2 matches calls made Monday through Friday between 9 AM to 6 PM. The range is not Monday 9 AM to Friday 6 PM.

host1/Admin# configure
host1/Admin(config)# sbc mySbc 
host1/Admin(config-sbc)# sbe 
host1/Admin(config-sbc-sbe)# call-policy-set 1
host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-time-table table1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time date yr 2006 2020 mon 1 
12 day 1 31
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 5
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time dow 1 5
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time tod hour  9 17 min 0 59
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 10
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete

The following example configures a rule that routes traffic through adjacency SipAdj1 at all times, and through SipAdj2 between Monday 9 AM and Friday 6 PM.

host1/Admin(config)# sbc mySbc 
host1/Admin(config-sbc)# sbe 
host1/Admin(config-sbc-sbe)# call-policy-set 1
host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-time-table table1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time date yr 2006 2020 mon 1 
12 day 1 31
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 5
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time dow 1 1 
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time tod hour 9 23 min 0 59
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 10
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 3
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time dow 2 4 
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 10
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 4
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time dow 5 5
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time tod hour 0 17 min 0 59
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 10
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete

In the configuration above, entry 2, entry 3, and entry 4 together specify the range Monday 9:00 AM through Friday 6:00 PM. This could also be accomplished by having one route for the entire time Monday through Friday with separate ranges to divert traffic during nights as follows:

host1/Admin(config)# sbc mySbc 
host1/Admin(config-sbc)# sbe 
host1/Admin(config-sbc-sbe)# call-policy-set 1
host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-time-table table1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time date yr 2006 2020 mon 1 
12 day 1 31
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 5
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time dow 1 5 
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 10
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# exit
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 3
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time dow 1 1 
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time tod hour 0 8 min 0 59
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 20
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 4
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time dow 5 5
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time tod hour 17 23 min 0 59
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 20
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete

The following example shows how to configure a rule that would route traffic through adjacencies SipAdj1 and SipAdj2 on Monday and Wednesday, respectively, between 9 AM and 6 PM, and through SipAdj3 at all other times.

host1/Admin# configure
host1/Admin(config)# sbc mySbc 
host1/Admin(config-sbc)# sbe 
host1/Admin(config-sbc-sbe)# call-policy-set 1
host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-time-table table1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time date yr 2006 2020 mon 1 
12 day 1 31
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 5
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj3
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time dow 1 1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time tod hour 9 17 min 0 59
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 10
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 3
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time dow 3 3
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time tod hour 9 17 
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 10
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj2

host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complet

The following example shows how to configure a rule that would route traffic through adjacency SipAdj1 on Saturdays and Sundays between 01 Mar 2008 through 30 Mar 2009, and through SipAdj2 all other times.

host1/Admin# configure
host1/Admin(config)# sbc mySbc 
host1/Admin(config-sbc)# sbe 
host1/Admin(config-sbc-sbe)# call-policy-set 1
host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-time-table table1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time date yr 2006 2020 mon 1 
12 day 1 31
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 5
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time date yr 2008 2009 mon 3 3 
day 1 30
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time dow 6 7
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 10
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete

The following example shows how to configure a rule that would route traffic through adjacency SipAdj1 between 10:00 PM and 6:00 AM from Friday to Monday, and through SipAdj2 otherwise.

host1/Admin# configure
host1/Admin(config)# sbc mySbc 
host1/Admin(config-sbc)# sbe 
host1/Admin(config-sbc-sbe)# call-policy-set 1
host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-time-table table1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time date yr 2006 2020 mon 1 
12 day 1 31
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 5
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time dow 5 1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time tod hour 22 5 min 0 59
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 10
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete

Note Time and day of the week are wrapping ranges, so the minimum can be larger than the maximum. For example, a single routing entry with the ranges Friday through Monday and 22:00 through 06:00 will match before 6 AM and after 10 PM on Friday, Saturday, Sunday and Monday.


In the following example, a user has all his routers running GMT no matter where they were so that they can be synchronized. But one router in New York has a time-based routing table that routes traffic to SipAdj1 at all times apart from Monday through Friday from 9 AM to 6 PM when it routes traffic to SipAdj2. The user wants these match times to refer to local time so it is necessary enter a time-offset command (New York is five hours behind GMT) as shown in the example below.

host1/Admin# configure
host1/Admin(config)# sbc mySbc 
host1/Admin(config-sbc)# sbe 
host1/Admin(config-sbc-sbe)# time-offset hour 5 min 0 negative
host1/Admin(config-sbc-sbe)# call-policy-set 1
host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-time-table table1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# use-time-offset
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time date yr 2006 2020 mon 1 
12 day 1 31
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 5
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# use-time-offset
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time tod hour 9 17 min 0 59
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time dow 6 7
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 10
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete

In the next example, a user to creates a routing table where the match times refer to a particular time zone. All of the routers are synchronized to GMT. But one router, in New York, has a time-based routing table that routes traffic to SipAdj1 at all times apart from Monday through Friday 9AM to 5PM when it routes traffic to SipAdj2. The user wants these match times to refer to local time; this can be accomplished using the timezone-offset command. Because New York is five hours behind GMT, the following table is needed:

host1/Admin# configure
host1/Admin(config)# sbc mySbc 
host1/Admin(config-sbc)# sbe
host1/Admin(config-sbc-sbe)# time-offset hour 5 min 0 negative
host1/Admin(config-sbc-sbe)# call-policy-set 1
host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-time-table table1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time date yr 2006 2020 mon 1 
12 day 1 31
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 5
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# use-time-offset
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time dow 1 5
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-time tod hour 9 17 min 0 59
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# precedence 10
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency SipAdj2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# use-time-offset

Regular Expression Routing: Example

The following is an example for regular expression routing.

host1/Admin(config-sbc)# sbe 
host1/Admin(config-sbc-sbe)# call-policy-set 8
host1/Admin(config-sbc-sbe-rtgpolicy)# description test dst domain route
host1/Admin(config-sbc-sbe-rtgpolicy)# first-call-routing-table testDstDomainNameRtgTabl
host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-dst-domain-table testDstDomainNameRtgTabl
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action next-table TextUserNameTable1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-domain ^abc[de]*\.com regex
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action next-table TextUserNameTable1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-domain xyz.com
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 3
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action reject
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-domain pqr.com
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 4
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency sipp-5
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-domain foo.com
host1/Admin(config-sbc-sbe-rtgpolicy)# rtg-dst-address-table TextUserNameTable1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency sipp-1
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-address ^min\(ty\|ion\) regex
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable)# entry 2
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# action complete
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# dst-adjacency sipp-3
host1/Admin(config-sbc-sbe-rtgpolicy-rtgtable-entry)# match-address numbered
host1/Admin(config-sbc-sbe-rtgpolicy)# complete
host1/Admin(config-sbc-sbe)# active-call-policy-set 8 

Configuration Example of Implementing Call Admission Control Policy Sets and CAC Tables

The following example shows the working of the CAC and is not meant to be realistic. The total number of concurrent calls per SBC (global limit) is 5, the number of concurrent calls per subscriber is 1, and the number of concurrent calls per all non-subscribers is 1.

host1/Admin# configure
host1/Admin(config)# sbc mySbc 
host1/Admin(config-sbc)# sbe 
host1/Admin(config-sbc-sbe)# cac-policy-set 1
host1/Admin(config-sbc-sbe-cacpolicy)# first-cac-scope global 
host1/Admin(config-sbc-sbe-cacpolicy)# first-cac-table table_1 
host1/Admin(config-sbc-sbe-cacpolicy)# cac-table table_1 
host1/Admin(config-sbc-sbe-cacpolicy-cactable)# match-type policy-set !!!meaning this is a 
CAC Policy Table !!! 
host1/Admin(config-sbc-sbe-cacpolicy-cactable)# entry 1 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# match-value subscriber !!!meaning 
limits in this entry are applied per subscriber!!! 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# max-num-calls 1 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# action CAC-Complete 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# exit
host1/Admin(config-sbc-sbe-cacpolicy-cactable)# entry 2
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# match-value global !!!meaning limits 
in this entry are applied globally!!! 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# max-calls 5 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# action cac-complete 

In the next example, the total number of concurrent calls per SBC (global limit)is 10, the number of concurrent calls per subscriber is 2, and the number of concurrent calls per (EACH) non-subscribers is 1. In the configuration, adj1 represents an endpoint which will register with adj2 before making a call, while adj3 and adj4 are non-subscribers and do not register before making calls.

To support this scenario and to apply the limits described above, you would need the following VPSS configuration: inherit profile for Adj1 set to preset-access, inherit profile for Adj2 set to preset-core, inherit profile for both adj3, and adj4 set to preset-standard-non-ims.

Here is the CAC configuration:

host1/Admin# configure
host1/Admin(config)# sbc mySbc 
host1/Admin(config-sbc)# sbe 
host1/Admin(config-sbc-sbe)# cac-policy-set 1
host1/Admin(config-sbc-sbe-cacpolicy)# first-cac-table !!! table1 
host1/Admin(config-sbc-sbe-cacpolicy)# cac-table table1 
host1/Admin(config-sbc-sbe-cacpolicy-cactable)# match-type policy-set 
host1/Admin(config-sbc-sbe-cacpolicy-cactable)# entry 1 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# match-value subscriber 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# action next-table table2 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# exit
host1/Admin(config-sbc-sbe-cacpolicy-cactable)# entry 2
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# match-value global 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# action cac-complete 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# max-num-calls 10 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# exit
host1/Admin(config-sbc-sbe-cacpolicy-cactable)# exit
host1/Admin(config-sbc-sbe-cacpolicy)# complete
host1/Admin(config-sbc-sbe-cacpolicy)# cac-table table2 
host1/Admin(config-sbc-sbe-cacpolicy-cactable)# match-type adjacency 
host1/Admin(config-sbc-sbe-cacpolicy-cactable)# entry 1 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# match-value adj1 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# action cac-complete 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# max-nums-calls 2 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# exit
host1/Admin(config-sbc-sbe-cacpolicy-cactable)# entry 2 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# match-value adj3 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# action cac-complete 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# max-nums-calls 1 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# exit
host1/Admin(config-sbc-sbe-cacpolicy-cactable)# entry 3
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# match-value adj4 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# action cac-complete 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# max-nums-calls 1 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# exit
host1/Admin(config-sbc-sbe-cacpolicy-cactable)# exit
host1/Admin(config-sbc-sbe-cacpolicy)# complete 

The following example shows how to configure call admission control policy sets and CAC tables:

host1/Admin# configure
host1/Admin(config)# sbc mySbc 
host1/Admin(config-sbc)# sbe 
host1/Admin(config-sbc-sbe)# cac-policy-set 1
host1/Admin(config-sbc-sbe-cacpolicy)# first-cac-scope global 
host1/Admin(config-sbc-sbe-cacpolicy)# first-cac-table STANDARD-LIST-BY-ACCOUNT 
host1/Admin(config-sbc-sbe-cacpolicy)# cac-table STANDARD-LIST-BY-ACCOUNT 
host1/Admin(config-sbc-sbe-cacpolicy-cactable)# match-type dst-account 
host1/Admin(config-sbc-sbe-cacpolicy-cactable)# entry 1
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# media-bypass-forbid
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# match-value SIP-CUSTOMER-1 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# max-num-calls 100
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# max-call-rate 20 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# max-bandwidth 1000000 bps
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# callee-privacy never
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# action cac-complete
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# exit
host1/Admin(config-sbc-sbe-cacpolicy-cactable)# entry 2
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# match-value SIP-CUSTOMER-2 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# max-num-calls 100
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# max-call-rate 20 
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# max-bandwidth 1000000 bps
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# transcode deny
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# action cac-complete
host1/Admin(config-sbc-sbe-cacpolicy-cactable-entry)# exit
host1/Admin(config-sbc-sbe-cacpolicy-cactable)# exit
host1/Admin(config-sbc-sbe-cacpolicy)# complete

The following example limits the total number of concurrent calls per SBC (global limit) to 2000 and number of concurrent calls per subcriber to 5. If a subscriber has 5 calls active, he will not be allowed to make the 6th call, even if the total number of active calls on SBC is less than 2000. Also, if the total number of active calls on SBC is 2000, a subscriber will not be allowed to make a call, even if he has no active calls.

host1/Admin# configure
host1/Admin(config)# sbc mySbc 
host1/Admin(config-sbc)# sbe 
host1/Admin(config-sbc-sbe)#