Direct Inward Dial (DID)-Range-Based Local Routing Table (LRT)

The Oracle® Enterprise Session Border Controllersupports LRT, an XML document that contains either E164 telephone numbers or strings-to-SIP-URI mappings. An iLRT is is configured and transferred from the development environment to the ESD /code/lrt directory. After installation and configuration, the LRT is available for SIP Request routing.

The information in the following sections is specific to contiguous ranges of Direct Inward Dial (DID) telephone numbers. Users of this LRT type should be acquainted with XML, and familiarize themselves with the more generic LRT descriptions supplied by the SC6.4.0 ACLI Configuration Guide.

Create a DID-Range-Based LRT File

A DID-Range-Based LRT file is a well-formed XML document with a <localRoutes/> root element.

The following attribute is found within the <localRoutes/> element.

type — This attribute is required for a DID-range-based LRT; set this attribute’s value to range.

<localRoutes/> can contain any number of child <route/> elements.

Each <route/> element contains:

  • a required <user/> element that (1) defines the LRT type, and (2) for a DID-range-based LRT, specifies a contiguous range of DID telephone numbers

    The <user/> element contains the following attributes:

    type — This required attribute can be assigned one of three enumerated values (E164, string, or range); for a DID-range-based LRT, you must use the range value.

    rangeStart — This required attribute specifies the start value for the DID range.

    rangeEnd— This required attribute specifies the end value for the DID range.

    rangePrefix — This optional attribute specifies the common prefix for the range bracketed by the rangeStart and rangeEnd attributes.

  • a required <next/> element that uses regular expression syntax to specify the routing next hop
  • an optional <description/> element that provides information relevant to the range of DID addresses

When creating the LRT file, keep the following rules in mind.

  1. Set the type attribute of the <localRoutes/> root element to range.
  2. Set the type attribute of all <user/> elements to range; <user/> elements of types other than range are invalid.
  3. The start and end values of a range, must be valid E164 numbers.
  4. The start and end values of a range, must contain the same number of digits.
  5. The value of the rangeStart attribute must be less than, or equal to, the value of the rangeEnd attribute.
  6. Ranges must not overlap. For example, the following ranges overlap.

    1000 - 1050

    1025 - 9999

    These ranges do not overlap.

    5510 -5519 (defines a contiguous range from 5510 through 5519)

    55100 - 55199 (defines a contiguous range from 55510 through 55519)

  7. After completing the LRT file, you must use SFTP to install the file in the ESD /code/lrt directory.

    The following annotated XML sample provides a template to assist users in crafting their own LRT file.

    <?xml version=”1.0? encoding=”US-ASCII” standalone=”yes”>
    
    <!-- A Local Routing Table (LRT) file based on DID ranges -->
    
    <localRoutes type=”range”>  <!-- set to range for DID LRT -->
    
    <!-- At least one <route/> element is required -->
    
    <!-- A one number range -->
         <route>
    <!-- <user/> element is required -->
              <user type=”range” rangeEnd=”5558888” rangeStart=”5558888”></user>
    <!-- <description/> element is optional -->
              <description>CampusSecurity</description>
    <!-- <next/> element is required -->
    <!-- the next hop for CampusSecurity expressed as a regex -->
              <next type=”regex”>!^.*$!sip:1@public-range!</next>
         </route>
    
    <!-- A multi-number range matches 149 through 155 -->
         <route>
              <user type=”range” rangeEnd=”155” rangeStart=”149”></user>
              <description>Quad 1</description>
    <!-- the next hop for 149-to-155 expressed as a regex -->
              <next type=”regex”>!^.*$!sip:1@public-range!</next>
         </route>
    
    <!-- A multi-number range with a prefix matches a1b149-to-a1b155 -->
         <route>
              <user type=”range” rangePrefix=”a1b” rangeEnd=”155”
               rangeStart=”149”></user>
              <description>Quad 1</description>
    <!-- the next hop for aib149-to-aib155 expressed as a regex -->
              <next type=”regex”>!^.*$!sip:1@public-range!</next>
         </route>
    </localRoutes>

Configuring a DID-Range-Based LRT

The following procedures provide information about configuring the LRT location and enabling LRT.

Specifying the LRT Location

After moving the DID-range-based LRT to the /code/lrt directory on the ESD, use the following procedure to specify the file’s location, and the lookup method.

  1. Move to local-routing-config mode.
    ACMEPACKET# configure terminal
    ACMEPACKET(config)# session-router
    ACMEPACKET(session-router)# local-routing-config
    ACMEPACKET(local-routing-config)#
  2. Provide an alias for the LRT file. Later, you will use this alias to assign the LRT to the local policy attributes.
    ACMEPACKET(local-routing-config)# name WestCampus
    ACMEPACKET(local-routing-config)#
  3. Provide the name of the file that contains the XML-formatted LTR. This file must currently exist within the /code/lrt directory.
    ACMEPACKET(local-routing-config)# file-name didLRT.xml.gz
    ACMEPACKET(local-routing-config)#
  4. Specify the look-up type. For DID-based LRTs, enable string-lookup to ensure that all ranges, including those with an alphabetic prefix (for example, test123), are properly evaluated.
    ACMEPACKET(local-routing-config)# string-lookup enabled
    ACMEPACKET(local-routing-config)#
  5. Because the prefix-length (if any) is specified within the XML file, ensure that the prefix-length attribute is set to its default value, 0.
    ACMEPACKET(local-routing-config)# prefix-length 0
    ACMEPACKET(local-routing-config)#
  6. Retain default values for other parameters.
  7. Use done, exit, and verify-config to complete this configuration.

Enabling LRT Usage

You enable LRT usage by assigning it to the local policy attributes.

Note:

When enabling usage of a DID-range-based LRT, you need not specify a match-mode, as required for E164- or string-based LRTs. The match-mode parameter is ignored for DID LRTs.
  1. Move to local-policy-attributes configuration mode.
    ACMEPACKET# configure terminal
    ACMEPACKET(config)# session-router
    ACMEPACKET(session-router)# local-policy
    ACMEPACKET(local-policy)# policy-attributes
    ACMEPACKET(local-policy-attributes)#
  2. Enable DID-based LRT usage by including the previously configured LRT alias in the local policy attributes list.
    ACMEPACKET(local-routing-attributes)# next-hop lrt:WestCampus
    ACMEPACKET(local-routing-attributes)#
  3. To ensure string type lookups, verify that the eloc-str-lkup and eloc-str-match parameters are both enabled.
    ACMEPACKET(local-routing-attributes)# eloc-str-lkup enabled
    ACMEPACKET(local-routing-attributes)# eloc-str-match enabled
    ACMEPACKET(local-routing-attributes)#
  4. Use done, exit, and verify-config to complete this configuration.

Managing LRT using the Show LRT Command

Existing ACLI show commands (show lrt and show lrt route-entry) commands have been enhanced to support DID ranges. A new command (show lrt route-table) displays the contents of a DID-range-based LRT.

show lrt now provides a count of valid and invalid route ranges as shown below.

ESD01# show lrt
14:43:03-64183
Name: lroute
Local Route Statistics       ---- Lifetime ----
                        Recent      Total     PerMax
Queries                      0          0          0
Result - Success             0          0          0
Result - Not found           0          0          0

Valid Route Entries:        19
Invalid Route Entries:       0
Valid Route Ranges          15                    // New to Version E-C[xz]6.4.0
Invalid Route Ranges         3                    // New to Version E-C[xz]6.4.0

show lrt route-entry displays matching DID ranges as follows.

ESD01# show lrt route-entry lroute 323
UserName <320-329>
            Entry Type = range
            NextHop = !^.*$!sip:3@public-range!
            NextHop Type = regexp
            Description = Test DID range

The new show lrt route-table displays a DID-range-based table as follows.

ESD01# show lrt route-table la 2
UserName <320-329>
        Entry Type = range
        NextHop = !^.*$!sip:3@public-range!
        NextHop Type = regexp
        Description = Test DID range

UserName <3123 - 3125>
        Entry Type = range
        NextHop = !^.*$!sip:1@public-range!
        NextHop Type = regexp 

Displaying 2 of 13 routes. Continue [y/n]?