Skip to main content
Oracle SBC Routing

Oracle SBC Routing

··795 words·4 mins
Mike Curtis
Author
Mike Curtis
Dedicated to Technology

Oracle Routing
#

The Oracle SBC has a few options available for routing calls.

  • Local-policy
  • ENUM and Local Routing Table
  • Trunk-group
  • Registration Cache
  • Service-Route Header routing
  • Header Routing
  • DNS Lookup

Local Policy
#

The main method for routing calls. Matches based realm then longest match on either Request-URI or the From header. The ingress realm is determined the network interface, in the case of multiple realms the SBC will use the source IP of the session agent, then the sip interface, if none of these are unique then the addr-prefix on the realm will be used. Next hop configurations can be as follows.

  • IP Addresses
  • EMUN Servers
  • Local Routing Tables
  • Session-agents
  • session-groups
  • DNS
  • Etc..

Notable Parameters
#

  • policy-priority Can be used to give higher matching priority to a local-policy, useful for 911.
  • policy-attribute Is used to determine wha the next hop will be. Preference can be selected based on carrier, time, cost, SIP Methods, or Codec. With the result determining the realm used for egress(if left blank the SBC will use the realm on the session-agent) and next hop. more specific elements will be selected over less specific elements. e.g. time of day 0:00-24:00 vs 8:00-17:00(more specific).
    • media-profile The SBC can routing incoming traffic based on Codec.
    • terminate-recursion If set to enabled the SBC will not continue to search other policy-attributes.
    • next-hop Defines a an object that is used as destination the that SBC will use to send a call to. This can be session–agent, session-group, ldap, enum, etc.

Session Constraints and Options
#

  • session-agents Can leverage constraints to influence local-policy routing decisions. With constraints enabled and max-sessions set to 1 the session agent would allow 1 call before being marks as unavailable in the local-policy evaluation.
    • rate-constraints Can be used to limits calls based on individual methods. extra-methods-stats must be enabled to used this option. With rate-constraints you do not want to configure it to include ACK, PRACK, BYE, INFO, REFER.
  • session-group One of a few method can be used to select a destination hunt, least busy, lowest sustained rate, round robin, and proportional distribution.
    • proportional distribution Will distribute calls based on max-sessions configurations.

Other Routing Options
#

  • Enhanced resolution of addresses can be located in the Contact header or the maddr parameter of a 3xx redirect message. The SBC will look for either a session-agent with a matching hostname or IP or session-group with a matching hostname as the group-name. This routing is enabled via the sip-interface and session-agent. redirect options are proxy, recurse, recurse-305-only
  • Static flows is a unidirectional configuration that will allow the SBC to pass traffic from one realm to the next.

DNS
#

There are a couple records that come into play when routing by DNS those include

  • NAPTR Defines the type of service and transport protocol used.
  • SRV Defines a target host and port to be used for connections.
  • A(IPv4)/AAAA(IPv6) Defines a FQDN to IP mapping.

When using DNS the order of operations are as follows.

  1. Determine egress realm
  2. Determine egress realm network interface.
  3. From the network interface pull the configured DNS.
  4. Send a DNS request to the primary Server. If the primary fails then used the secondary.
  5. Preform a recursive lookup or additional queries depending on the NAPTR results.
  6. Setup the call based on FQDN results.

With in the policy-attribute valid next hop entries are HOSTNAME:sip.oracle.com or DOMAIN:oracle.com

ENUM
#

Shot for E.164 number mapping. It can use DNS to locate services.

  1. The number would be stored in e.164 format.
  2. Digits like + or - would then be removed.
  3. The order of the Digits would be replaced.
  4. Dots would be added in between each number.
  5. e164.arpa would be appended to the end.
  6. The domain name is queried for the records that defines the URI’s.

With in the policy-attribute valid next hop entries are enum:enum-object

LRT (Local Routing Table)
#

An LRT is a xml file that can be used to match a number to a destination. There can be ~500 LRT tables, 100,000 entries per LRT, and 2,000,000 per system. LRT’s use regex to parse the request-URI to find a routing match an example is below, refer to Using the Local Route Table LRT for Routing for more information.

<?xml  version="1.0" encoding="UTF-8"?>
<localRoutes>
<route format=”weighted”>
      <user type="E164">370</user>
      <next prio="0" weight="40" type="regex">!^.*$!sip:\0@SAG-CarrierA!</next>
      <next prio="0" weight="30" type="regex">!^.*$!sip:\0@SAG-CarrierB!</next>
      <next prio="0" weight="20" type="regex">!^.*$!sip:\0@SAG-CarrierC!</next>
      <next prio="1" weight="10" type="regex">!^.*$!sip:\0@SAG-CarrierD!</next>
      <next prio="2" weight="10" type="regex">!^.*$!sip:\0@SAG-CarrierE!</next>
</route>
<route>        
      <user type="E164">371</user>        
      <next type="regex">!^.*$!sip:\0@SAG-NoPrio1</next>
      <next type="regex">!^.*$!sip:\0@SAG-NoPrio2</next>
</route>
</localRoutes>

Type range and E164 cannot be used in the same file.

LRT files are placed in the /code/lrt directory. When they have been updated. you must entry notify lrtd refresh <local-routing-config name> if you have HA then issue synchronize lrt /code/lrt/<filename>. The following is considered best practice.

local-routing-config
        name                                    lrt
        file-name                               lrt.xml.gz
        prefix-length                           0
        string-lookup                           disabled
        retarget-requests                       enabled
        match-mode                              best

Related