Trunk Groups with Digital Ports

Last blog we looked at how we can use Trunk groups to ease the configuration of dial-peers and digit manipulation using analog FXO ports for an E911 solution. Now let’s take a look on how it can be used for T-1 CAS configurations and ISDN channel selection.

The first example will be T-1 CAS configuration with a provider. Here we want to associate T1 0/0/0 first 12 ports for low priority for outbound calls and last 12 ports for high priority outbound calls. In other words channels 13-24 should be used first to make our outbound calls and the lower channels reserved in case more than 12 outbound calls are needed. Starting with the exhibit below let’s look at a configuration to support this on GW1.

The first thing to do remember from the last blog is to create the actual trunk group with its hunting parameters:

GW1(config)# trunk group GKNOutbound
GW1(config-trunk-group)# hunt-scheme round-robin even up
GW1(config-trunk-group)# translation-profile incoming PSTN-IN
GW1(config-trunk-group)# translation-profile outgoing PSTN-OUT
GW1(config-trunk-group)# exit

First we are setting our hunt scheme to round robin, and even up means we will start at the low channel numbers and work our way to the last using even DS0’s only. If no even ports are available it will use odd ports if available. Also we are doing our E.164 number manipulation for incoming and outgoing calls.

Now we will create our two DS0 groups where group 1 includes the first 12 channels (which you’ll recall from above we want to eventually make low priority) and group 2 holding channels 13 through 24.

GW1(config)# controller T1 0/0/0
GW1(config-controller)# ds0-group 1 timeslots 1-12 type e&m-fgd
GW1(config-controller)# cas-custom 1
GW1(config-controller)# trunk-group GKNOutbound 5
GW1(config-controller)# exit
GW1(config)# controller T1 0/0/0
GW1(config-controller)# ds0-group 2 timeslots 13-24 type e&m-fgd
GW1(config-controller)# cas-custom 2
GW1(config-controller)# trunk-group GKNOutbound 3
GW1(config-controller)# exit

Remember, on ds0-group 2 we are using a preference value of 3 which is higher than ds0-group 1 which is using a preference of 5. Therefore, we will hunt through the high end DS0’s before going to the low end as per the requirements stipulated above.

Now it’s time to associate the two trunk groups, preferring ds0-group 1 over ds0-group 2 using preference keyword when associating this to an outbound dial-peer as follows:

GW1(config)# dial-peer voice 112 pots
GW1(config-dial-peer)# trunkgroup GKNOutbound 1

A second example of dialing with trunk groups is using T-1 PRI with a service provider. The configuration is going to be very similar but instead of using ds0-groups, we will be using pri-groups. Just to add a little twist to the puzzle, we want to use the first four channels for 911 only dial-out and then use the rest of the channels for 911 service if the first four channels are busy. Also the other 19 channels will be used for normal PSTN dial out.

Unlike the example above we will have to now declare two trunk groups, where the first trunk group will only be associated to the emergency 911 digital channels and the last 19 will be configured for standard or general outbound calls.

Now let’s declare our hunt groups:

GW1(config)# trunk group GKNEmergencyCalls
GW1(config-trunk-group)# hunt-scheme round-robin
GW1(config-trunk-group)# translation-profile incoming PSTN-IN
GW1(config-trunk-group)# translation-profile outgoing PSTN-OUT
GW1(config-trunk-group)# exit
GW1(config)# trunk group GKNStandardCalls
GW1(config-trunk-group)# hunt-scheme sequential odd up
GW1(config-trunk-group)# translation-profile incoming PSTN-IN
GW1(config-trunk-group)# translation-profile outgoing PSTN-OUT
GW1(config-trunk-group)# exit

Now we will create our pri group and associate the two hunt groups:

GW1(config)# controller T1 0/0/0
GW1(config-controller)# pri-group timeslots 1-24
GW1(config-controller)# trunk-group GKNEmergencyCalls timeslots 1-4
GW1(config-controller)# trunk-group GKNStandardCalls timeslots 5-23
GW1(config-controller)# exit

Notice how we can associate certain channels to each hunt group! This is great flexibility given to us by Cisco. Now let’s apply the trunk groups to the appropriate dial-peers:

GW1(config)# dial-peer voice 911 pots
GW1(config-dial-peer)# trunkgroup GKNEmergencyCalls 1
GW1(config-dial-peer)# trunkgroup GKNStandardCalls 2

(Note: Trunkgroup emergency is given higher priority over standard)

GW1(config-dial-peer)# destination-pattern 911
GW1(config-dial-peer)# prefix 911
GW1(config)# dial-peer voice 858 pots
GW1(config-dial-peer)# trunkgroup GKNStandardCalls
GW1(config-dial-peer)# destination-pattern 91[2-9]..[2-9]......

One last thing to mention, let’s say we have another T-1 0/0/1 along with the configuration above for T-1 0/0/0, we have no desire to split the channels but just want to associate all channels with the GKNStandard Calls. Just a small difference would be instead of doing the trunk group associations at the controller level, we can assign it at the D channel or serial interface level. The example below illustrates this additional configuration:

GW1(config)# controller T1 0/0/1
GW1(config-controller)# pri-group timeslots 1-24

Now we will assign the trunk group at the Serial Interface level:

GW1(config)#Interface S0/0/1:23
GW1(config-if)# trunkgroup GKNStandardCalls

Now the second T-1 PRI is associated with the normal dial-out hunt group using all 23 DS0 channels.

Hope you enjoyed the discussion on Hunt Groups and you will find them to be a very useful resource for gateway configurations whether you use SIP or H.323.

In this article

Join the Conversation


  1. Alastair Reply


    I think there might be a typo on this page.

    did you mean,
    GW1(config)# hunt group GKNOutbound
    or did you actually mean
    GW1(config)# trunk group GKNOutbound


    1. Joe Parlas Reply

      Your correct and it has been corrected.