Trunk Group URIs

The Oracle® Enterprise Session Border Controller’s trunk group URI feature, applicable for SIP and IWF signaling services, enables the capabilities related to trunk groups that are described in this section. This implementation follows the IPTEL draft Representing Trunk Groups in Tel/SIP Uniform Resource Identifiers (URIs) (draft-ietf-iptel-trunk-group-06.txt), and also supports more customized approaches.

  • For a typical access call flow scenario, when the calling party’s call arrives at the Oracle® Enterprise Session Border Controller, the Oracle® Enterprise Session Border Controller formulates a SIP INVITE message that it sends to a softswitch. The Oracle® Enterprise Session Border Controller now supports a new URI contact parameter in the SIP request message so that service providers need to be able to:
    • Determine from where the Oracle® Enterprise Session Border Controller received the call
    • Signal information about the originating gateway from a Oracle® Enterprise Session Border Controller to a softswitch (e.g., an incoming trunk group or a SIP gateway to a Oracle® Enterprise Session Border Controller)
  • This feature supports the signaling of routing information to the Oracle® Enterprise Session Border Controller from network routing elements like softswitches. This information tells the Oracle® Enterprise Session Border Controller what egress route (or outgoing trunk groups) it should choose for terminating next hops/gateways. For this purpose, new SIP URI parameters in the Request-URI are defined. Additional URI parameters include the network context to identify the network in which the originating or terminating gateway resides.
  • Especially important for large business applications, this feature can free Oracle® Enterprise Session Border Controller resources by reducing the number of local policy, session agent, and session agent group configurations. By enabling the trunk group URI feature, the Oracle® Enterprise Session Border Controller instead uses a routing scheme based on signaled SIP URI information.

Terminology

The following IPTEL terms are used in the descriptions of and instructions for how to configure this feature:

  • Trunk—In a network, a communication path connecting two switching systems used in the establishment of an end-to-end connection; in selected applications, it may have both its terminations in the same switching system
  • Trunk group—A set of trunks, traffic engineered as a unit, for the establishment of connections within or between switching systems in which all of the paths are interchangeable except where sub-grouped
  • Trunk group name—Provides a unique identifier of the trunk group; referred to as tgrp
  • Trunk group context—Imposes a namespace by specifying a domain where the trunk groups are; also referred to simply as context

Trunk Group URI Parameters

Trunk group URI parameters identify originating and terminating trunk group information in SIP requests.

In the absence of official SIP standards for transporting trunk groups between signaling elements, the Oracle® Enterprise Session Border Controller allows you to define URI parameters for use with originating and terminating trunk group URIs.

Originating Trunk Group URI Parameters and Formats

You can configure session agents and session agents groups on the Oracle® Enterprise Session Border Controller to insert trunk group URI parameters in the SIP contact header. When SIP gateways comply with the IPTEL draft, they include the originating URI parameter in the SIP contact header. For those SIP and H.323 gateways that are not compliant, the Oracle® Enterprise Session Border Controller inserts SIP trunk group URI parameters on the gateway’s behalf.

When there are no applicable session agent or session agent group configurations, the Oracle® Enterprise Session Border Controller uses the source IP address of the endpoint or gateway as the trunk group name (tgrp) parameter in the originating trunk group URI.

The following diagram shows a scenario where the Oracle® Enterprise Session Border Controller inserts originating trunk group URI parameters.

The OCSBC handling originating trunk group parameters.

There are two available formats for the originating trunk group URIs:

  1. In compliance with the IPTEL draft, the first format has two parameters: tgrp (identifier of the specific trunk group) and trunk-context (defines the network domain of the trunk group). These appear in the following formats:
    • tgrp=”trunk group name”

    • trunk-context=”network domain”

      The URI BNF for would appear as it does in the example directly below, where the tgrp is tg55 and the trunk-context is trunk-context is telco.example.com:

      tel:+15555551212;tgrp=tg55;trunk-context=telco.example.com
  2. The second format is customized specifically for access URIs and contains two provisioned parameters: tgrp (or tgname) and context (or provstring). This appears as tgrp.context, where these definitions apply:
    • tgrp (tgname)—Provisioned trunk group name for the originating session agent; this value must have at least one alphabetical character, cannot contain a period (.), and can contain a hyphen (-) but not as the first or the last character

    • context (provstring)—Name of the originating trunk group context; this value must have at least one alphabetical character in the top label

      This format conforms to format for a hostname in the SIP URI as specified in RFC 3261, such that a trunk group identifier would appear as:

      custsite2NY-00020.type2.voip.carrier.net

      where the tgrp is custsite2NY-00020, and the context is type2.voip.carrier.net.

      The BNF for an access URI conforms to the following:

      SIP-URI = "sip:" [userinfo ] hostport uri-parameters [headers ]

      uri-parameters = *( ";" uri-parameter )

      uri-parameter = transport-param / user-param / method-param

      / ttl-param / maddr-param / lr-param / other-param

      other-param = accessid / pname [ '=' pvalue ]
      accessid = "access=" accessURI
      accessURI = scheme tgname ["." provstring]
      scheme = "sip:" / token
      tgname = ALPHA / *(alphanum) ALPHA *(alphanum / "-") alphanum /
      	alphanum *(alphanum / "-") ALPHA *(alphanum) # up to 23 characters
      provstring = *(domain ".") toplabel # up to 24 characters
      toplabel = ALPHA / ALPHA *( alphanum / "-" ) alphanum
      domain = alphanum/ alphanum *( alphanum / "-" ) alphanum

Terminating Trunk Group URI Parameters and Formats

Terminating trunk group URI parameters appear in the R-URI, and they can be included in by a network routing element to instruct the Oracle® Enterprise Session Border Controller which egress trunk groups to use. By matching the trunk group URI parameter with configured session agents or session agent groups, the Oracle® Enterprise Session Border Controller can locate the terminating gateway. The trunk group name can also be expressed as the IP address of the terminating gateway.

The OCSBC haqndling terminating trunk group parameters.

In the absence of official SIP standards for transporting trunk groups between signaling elements, the Oracle® Enterprise Session Border Controller allows you to define the URI parameters used in terminating trunk groups.

There are two available formats for the terminating trunk group URIs:

  1. In compliance with the IPTEL draft, the first format has two parameters: tgrp (which can be either a trunk group name or an IP address) and trunk-context (defines the network domain of the trunk group). These appear in the following formats:
    • tgrp=”trunk group name”

    • trunk-context=”network domain”

      An example R-URI with terminating trunk group parameters appears as follows, where the tgrp is TG2-1 and the context is isp.example.net@egwy.isp.example.net:

      INVITE sip:+15555551212;tgrp=TG2-1;trunk-context=isp.example.net@egwy.isp.example.net SIP/2.0
  2. The second format is customized specifically for egress URIs and contains two provisioned parameters: tgrp (or tgname) and context (or tgdomain). This appears as tgrp.context (or tgname.tgdomain), where definitions apply:
    • tgrp (tgname)—Provisioned trunk group name for the originating session agent; this value must have at least one alphabetical character, cannot contain a period (.), and can contain a hyphen (-) but not as the first or the last character

    • context (tgdomain)—Name of the terminating trunk group context; this value can be up to twenty-four characters

      The use of multiple terminating trunk groups is not supported.

      The BNF for a single, egress URI with trunk group information conforms to:

      SIP-URI = "sip:" [userinfo ] hostport uri-parameters [headers ]
      uri-parameters = *( ";" uri-parameter )
      uri-parameter = transport-param / user-param / method-param
      			/ ttl-param / maddr-param / lr-param / other-param
      other-param = egressid  / pname [ '=' pvalue ]
      egressid = "egress=" egressURI
      egressURI = scheme tgname ["." tgdomain]
      scheme = "sip:" / token
      tgname = ALPHA / *(alphanum) ALPHA *(alphanum / "-") alphanum /
      	alphanum *(alphanum / "-") ALPHA *(alphanum) # up to 23 characters
      tgdomain = *(domain ".") toplabel # up to 24 characters
      toplabel = ALPHA / ALPHA *( alphanum / "-" ) alphanum
      domain = alphanum/ alphanum *( alphanum / "-" ) alphanum

      For all trunk group URI support, you must set the appropriate parameters in the SIP manipulations configuration and in the session agent or session agent group configurations.

      In the originating trunk group URI scenario, a call arrives at the Oracle® Enterprise Session Border Controller from a configured session agent or session agent group. If this session agent or session agent group has the appropriate trunk group URI parameters and inbound manipulation rules configured, the Oracle® Enterprise Session Border Controller then looks to the SIP manipulations configuration and add the trunk group URI information according to those rules. Those rules tell the Oracle® Enterprise Session Border Controller where and how to insert the trunk group URI information, and the system forwards the call.

      In the terminating trunk group scenario, a call arrives at the Oracle® Enterprise Session Border Controller from, for instance, a call agent. This call contains information about what trunk group to use. If the information matches a session agent or session agent group that has outbound manipulation rules configured, the Oracle® Enterprise Session Border Controller will then look up the SIP manipulations configuration and strip information according to those rules. Those rules tell the Oracle® Enterprise Session Border Controller where and how to remove the information, and the Oracle® Enterprise Session Border Controller forwards the call.

Trunk Group Signaling Parameters

The Oracle® Enterprise Session Border Controller supports a dynamic reading of the initial INVITE message of the session Contact header and Request URI tag parameter. This facilitates populating the Trunk Group and Trunk Context parameters into the existing AVPs.

For Ingress messages, if the trunk-group and the trunk-context parameters are configured in the session agent and the realm-configuration respectively, the Oracle® Enterprise Session Border Controller populates these values in the Acme-Originating-Trunk-Group and the Acme-Originating Trunk-Context AVPs of the START/INTERMIDIATE/STOP accounting records. Similarly for an Egress session, if the trunk-group and the trunk-context parameters are configured in the session agent and the realm-configuration respectively, the Oracle® Enterprise Session Border Controller populates these values in the Acme-Terminating-Trunk-Group and the Acme-Terminating-Trunk-Context AVPs of the START/INTERIM/STOP accounting records.

The following diagram shows the functional architecture of a typical access call flow scenario with Trunk Group and Trunk-Context parameters

A typical access call flow scenario with Trunk Group and Trunk-Context parameters.

The received SIP signaling URI trunk group parameters can be populated into the accounting AVP parameters for ingress and egress legs by adding the populate-signaling-tgrp option in the session-agent.

ORACLE#(session-agent) options +populate-signaling-tgrp

In the absence of the trunk-group and trunk-context parameters from the session-agent and realm-configuration respectively of the Ingress Session, if the session-agent is configured with the option populate-signaling-tgrp, the Oracle® Enterprise Session Border Controller will decode the tgrp and trunk-context parameters received in the initial INVITE message 'Contact header' of the session and cache these values for the session duration. SBC will then populate these received parameter values in Acme-Originating-Trunk-Group and Acme-Originating-Trunk-Context AVPs of START/INTERMEDIATE/STOP accounting records. Similarly for the egress session, the SBC will decode the tgrp and trunk-context parameters received in first INVITE message 'Request-URI' of the session and cache these values for the session duration. SBC will then populate these received parameter values in Acme-Terminating-Trunk-Group and Acme-Terminating-Trunk-Context AVPs of START/INTERIM/STOP accounting records.

Oracle® Enterprise Session Border Controller will cache and populate only if both tgrp and trunk-context and present in the Contact header. In the absence of even one of the parameters the system will discard the received parameter and will not populate the parameter to the corresponding AVP.

SIP Header and Parameter Manipulation

SIP header and parameter manipulation is its own configuration where you can set up rules for the addition, removal, and modification of a SIP header or the elements of a SIP header. For example, you can set up the configuration to add a URI parameter to the URI in a SIP header or replace an FQDN with in IP address. For trunk group URI support, this configuration tells the Oracle® Enterprise Session Border Controller where and how to manipulate the SIP message to use originating (access) and terminating (egress) trunk group URI parameters.

These manipulations can be applied at the realm or at the session agent level.

Trunk Group Routing

You can configure SIP interfaces (using the ACLI term-tgrp-mode parameter) to perform routing based on the trunk group information received in SIP requests. There are three options: none, IPTEL, and egress URI.

  • If you leave this parameter set to none (its default), the Oracle® Enterprise Session Border Controller will not look for or route based on terminating trunk group URI parameters
  • When you set this parameter to either iptel or egress-uri and the incoming request has the trunk group parameter of this type (IPTEL or egress URI), the Oracle® Enterprise Session Border Controller will select the egress next hop by matching the “tgrp” and trunk context with a configured session agent or session agent group.

    If the received terminating trunk group URI parameters include an IP address, the egress next hop is the IP address specified. The Oracle® Enterprise Session Border Controller determines the egress realm by matching the trunk context it receives with the trunk context you configure for the realm.

  • If the incoming request does not have trunk group parameters or it does not have trunk group parameters of the type that you configure, the Oracle® Enterprise Session Border Controller uses provisioned procedures and/or local policy for egress call routing.

The Oracle® Enterprise Session Border Controller returns errors in these cases:

  • If the terminating trunk group URI parameters do not identify a local Oracle® Enterprise Session Border Controller session agent or session agent group, then the Oracle® Enterprise Session Border Controller returns a SIP final response of 488 Not Acceptable Here.
  • If the Oracle® Enterprise Session Border Controller receives a SIP INVITE with terminating trunk group URI parameters that do not match the specified syntax, the Oracle® Enterprise Session Border Controller returns a 400 final response with the reason phrase Bad Egress=Parameters.

Trunk Group URIs and SIP Registration Caching

For calls where SIP registration caching is used, you will need to set certain parameters that enable the Oracle® Enterprise Session Border Controller to preserve trunk group URI parameters on the outgoing side.

  • For SIP-SIP calls, you set the preserve-user-info option in the SIP interface configuration.
  • For SIP-H.323 calls requiring IWF, you set the preserve-user-info-sa option in the session agent configuration.

Trunk Group URI Configuration

Before you configure your Oracle® Enterprise Session Border Controller to support trunk group URIs, you need to determine:

  • How you want to manipulate SIP headers (entered in the SIP header manipulations configuration)
  • For terminating trunk group routing, the trunk group mode you want to use (none, IPTEL, or egress URI); this decides routing based on trunk group information
  • The trunk group name and context to use entered in a session agent or session agent group configuration
  • Whether you are using originating or terminating trunk group URIs (entered in the session agent configuration)
  • The trunk group context for use in a realm configuration, in case the trunk group name in the session agent or session agent group does not have a context

Precedence Used for Trunk Group Configurations

The Oracle® Enterprise Session Border Controller (ESBC) can insert trunk-group/trunk-context URIs into applicable SIP messages when the upstream SIP or H.323 gateways do not. The values inserted are dependent on ESBC configuration and use configuration precedence when configurations conflict.

The ESBC uses the following precedence when choosing these element's trunk-group and trunk-context configuration values for routing.

  1. session-agent (SA)
  2. session-group (SAG)
  3. realm

Note:

Do not configure a trunk context without a trunk-group.

The examples below present configurations for SA, SAG and realm and the resulting trunk group and context values to be inserted. Examples also include an explanation for the result.

Example 1 (Result—trgp1:contextg)

  • SA Configuration: trunk-group tgrp1
  • SAG Configuration: trunk-group tgrp2:context2
  • Realm Configuration: trunk-context contextg

The ESBC selects SA trunk-group value. The SA has no context, so the ESBC uses the realm's context value.

Example 2 (Result—trgp1:context1)

  • SA Configuration: trunk-group tgrp1:context1
  • SAG Configuration: trunk-group tgrp2:context2
  • Realm Configuration: trunk-context contextg

The ESBC selects the SA trunk-group and context values.

Example 3 (Result—trgp2:context2)

  • SA Configuration: trunk-group [null]
  • SAG Configuration: trunk-group tgrp2:context2
  • Realm Configuration: trunk-context contextg

The ESBC selects the SAG trunk-group and context values.

Example 4 (Result—trgp2:contextg)

  • SA Configuration: trunk-group [null]
  • SAG Configuration: trunk-group tgrp2
  • Realm Configuration: trunk-context contextg

The ESBC selects the SAG trunk-group's value. The SAG has no context, so the ESBC uses the realm's context value.

Example 5 (Result—none)

  • SA Configuration: trunk-group [null]
  • SAG Configuration: trunk-group [null]
  • Realm Configuration: trunk-context contextg

The ESBC has no configured trunk-group value and cannot support a context without a group.

Example 6 ( Result—ABC)

  • SA Configuration: trunk-group [null]
  • SAG Configuration: trunk-group ABC
  • Realm Configuration: trunk-context [null]

The ESBC selects the SAG trunk-group's value, and does not use a context.

Configuring SIP Manipulations

When you configure the SIP header manipulations to support trunk group URIs, take note of:

  • The name of the configuration, so that you can use it when you apply the manipulations in a session agent for the inbound or outbound manipulations
  • The new-value parameter, which specifies the trunk group and trunk group context that you want to manipulate; the possible values that apply to trunk group URI configurations are $TRUNK_GROUP and $TRUNK_GROUP_CONTEXT

Setting the Trunk Group URI Mode for Routing

To set the mode for routing for terminating trunk group URIs:

  1. In Superuser mode, type configure terminal and press Enter.
    ORACLE# configure terminal
  2. Type session-router and press Enter to access the session-related configurations.
    ORACLE(configure)# session-router
  3. Type sip-interface and press Enter.
    ORACLE(session-router)# sip-interface
    ORACLE(sip-interface)#
  4. term-tgrp-mode—Set the mode that you want to use for routing for terminating trunk group URIs. The default is none. Your choices are:
    • none—Disables routing based on trunk groups

    • iptel—Uses trunk group URI routing based on the IPTEL formats

    • egress-uri—Uses trunk group URI routing based on the egress URI format

Configuring a Session Agent for Trunk Group URIs

In a session agent, you can configure the outbound or inbound SIP header manipulation rules to use, as well as a list of trunk group names and contexts. For the trunk group names and contexts, you can use either the IPTEL or the custom format.

To configure a session agent for trunk group URIs:

  1. In Superuser mode, type configure terminal and press Enter.
    ORACLE# configure terminal
  2. Type session-router and press Enter to access the session-related configurations.
    ORACLE(configure)# session-router
  3. Type session-agent and press Enter.
    ORACLE(session-router)# session-agent
    ORACLE(session-agent)#
  4. out-manipulationid—Enter the name of the SIP header manipulations configuration that you want to apply to the traffic exiting the Oracle® Enterprise Session Border Controller via this session agent. There is no default.
  5. in-manipulationid—Enter the name of the SIP header manipulations configuration that you want to apply to the traffic entering the Oracle® Enterprise Session Border Controller via this session agent. There is no default.
  6. trunk-group—In either IPTEL or custom format, enter the trunk group names and trunk group contexts to match. If you do not set the trunk group context, then the Oracle® Enterprise Session Border Controller will use the one you set in the realm for this session agent.

    Your ACLI entries for this list must be one of these formats: tgrp:context or tgrp.context.

    To make multiple entries, surround your entries in parentheses and separate them from each other with spaces. For example:

    ORACLE(session-agent)# trunk-group (tgrp1:context1 tgrp2:context2)
  7. options—If you want to configure trunk group URIs for SIP-H.323 calls that use the IWF and you are using SIP registration caching, you might need to add the preserve-user-info-sa to your list of session agent options.

    If you are adding this option to a new session agent, you can just type options, a Space, and preserve-user-info-sa.

    If are adding this to an existing session agent, you must type a plus (+) sign before the option or you will remove any previously configured options. In order to append the new option to the options list, you must prepend the new option with a plus sign: options +preserve-user-info-sa.

Configuring a Session Agent Group for Trunk Group URIs

In a session agent group, you can configure the outbound or inbound SIP header manipulation rules to use, as well as a list of trunk group names and contexts. For the trunk group names and contexts, you can use either the IPTEL or the custom format.

To configure a session agent group for trunk group URIs:

  1. In Superuser mode, type configure terminal and press Enter.
    ORACLE# configure terminal
  2. Type session-router and press Enter to access the session-related configurations.
    ORACLE(configure)# session-router
  3. Type session-group and press Enter.
    ORACLE(session-router)# session-group
    ORACLE(session-agent-group)#
  4. trunk-group—In either IPTEL or custom format, enter the trunk group names and trunk group contexts to match. If you do not set the trunk group context, then the Oracle® Enterprise Session Border Controller will use the one you set in the realm for this session agent group.

    Your ACLI entries for this list must take one of these formats: tgrp:context or tgrp.context.

    To make multiple entries, surround your entries in parentheses and separate them from each other with spaces. For example:

    ORACLE(session-agent-group)# trunk-group (tgrp1:context1 tgrp2:context2)

Setting a Trunk Group Context in a Realm

You can set trunk group contexts at the realm level, which will be used by all session agents and session agent groups if there is no context specified in their configurations.

The realm trunk group URI context accommodates the IPTEL and the custom format.

To configure a trunk group context for a realm:

  1. In Superuser mode, type configure terminal and press Enter.
    ORACLE# configure terminal
  2. Type media-manager and press Enter to access the session-related configurations.
    ORACLE(configure)# media-manager
  3. Type realm-config and press Enter.
    ORACLE(media-manager)# realm-config
    ORACLE(realm-config)#
  4. trunk-context—Enter the trunk group context to use for this realm. There is no default.

Using this Feature with a SIP Interface

If you are using the trunk group URIs feature with SIP interface that has registration caching enabled, then you need to configure the preserve-user-info option for that SIP interface.

  1. In Superuser mode, type configure terminal and press Enter.
    ORACLE# configure terminal
  2. Type session-router and press Enter to access the session-related configurations.
    ORACLE(configure)# session-router
  3. Type session-group and press Enter.
    ORACLE(session-router)# sip-interface
    ORACLE(sip-interface)#
  4. options—Add support for trunk group URIs with SIP interface that uses registration caching.

    If you are adding this option to a new SIP interface, you can just type options, a Space, and preserve-user-info.

    If are adding this to an existing SIP interface, you must type a plus (+) sign before the option or you will remove any previously configured options. In order to append the new option to the options list, you must prepend the new option with a plus sign: options +preserve-user-info.

Example 1 Adding Originating Trunk Group Parameters in IPTEL Format

This ACLI sample shows you how the ACLI SIP manipulations might appear in a case where you want to add originating trunk parameters in IPTEL format.

sip-manipulation
        name                           add_iptel
        header-rule
                name                           contact
                action                         manipulate
                match-value
                msg-type                       any
                element-rule
                        name                           tgrp
                        type                           uri-user-param
                        action                         add
                        match-val-type                 any
                        match-value
                        new-value                      $TRUNK_GROUP
element-rule
                        name                           trunk-context
                        type                           uri-user-param
                        action                         add
                        match-val-type                 any
                        match-value
                        new-value                      $TRUNK_GROUP_CONTEXT

Example 2 Adding Originating Trunk Group Parameters in Custom Format

This ACLI sample shows you how the ACLI SIP manipulations might appear in a case where you want to add originating trunk parameters in custom format.

sip-manipulation
        name                           add_att
        header-rule
                name                           contact
                action                         manipulate
                match-value
                msg-type                       any
                element-rule
                        name                           egressURI
                        type                           uri-param
                        action                         add
                        match-val-type                 any
                        match-value
                        new-value                      "sip:"+$TRUNK_GROUP+"."+$TRUNK_GROUP_CONTEXT

Example 3 Removing IPTEL Trunk Group Names

This ACLI sample shows you how the ACLI SIP manipulations might appear in a case where you want to remove IPTEL trunk groups names.

sip-manipulation
        name                           strip_iptel
        header-rule
                name                           request-uri
                action                         manipulate
                match-value
                msg-type                       any
                element-rule
                        name                           tgrp
                        type                           uri-user-param
                        action                         delete-element
                        match-val-type                 any
                        match-value
                        new-value
element-rule
                        name                           trunk-context
                        type                           uri-user-param
                        action                         delete-element
                        match-val-type                 any
                        match-value
                        new-value

Example 4 Removing Custom Trunk Group Names

This ACLI sample shows you how the ACLI SIP manipulations might appear in a case where you want to remove custom trunk groups names.

sip-manipulation
        name                           strip_egress
        header-rule
                name                           request-uri
                action                         manipulate
                match-value
                msg-type                       any
                element-rule
                        name                           egressURI
                        type                           uri-param
                        action                         delete-element
                        match-val-type                 any
                        match-value
                        new-value