Cisco CUBE/ CUCM IP Trunk Configuration

Our focus in this article is to achieve the connection between your CISCO/CUCM server, and our Mission Control Portal. We will describe a sample trunk configuration of the assuming that you already made the main CISCO/CUCM installation and telecommunication-applications deployment.

This is the layout of our set-up:


Configure a Dial-Peer to Telnyx as follows:

In global configuration mode

dial-peer voice 100 voip        ! 100 is an arbitrary number
translation-profile incoming 100  ! Used to translate DID to extension
destination-pattern 1[2-9]..[2-9]...... !general pattern for an outgoing 11 digit calling
session protocol sipv2
voice-class sip profiles 1   ! Refers to a pre-configured SIP Profile, used to modify headers in SIP Messages
session target ipv4:  ! or replace with
incoming called-number 1[2-9]..[2-9]...... 
dtmf-relay rtp-nte cisco-rtp sip-kpml sip-notify
voice-class codec 1      ! 1 Refers to a pre-configured ordered list of codecs

In some versions of IOS, you can whitelist SIP IPs as follows:

In global configuration mode

voice service voip
ip address trusted list
ipv4 !Private IP address of CUCM

Specify general SIP parameters thus:

In global configuration mode

voice service voip
mode border-element  ! Required if operating in CUBE mode, as opposed to CME
allow connections sip to sip  ! Permit SIP to SIP calls
early-offer forced
midcall-signaling passthru
sip-profiles 1   ! Refers to pre-configured sip profile

Configure codec preference

In global configuration mode

voice class codec 1
codec preference 1 g711ulaw
codec preference 2 g711alaw
codec preference 3 g729br8

NAT Traversal

If your CUBE is behind a NAT and does not have an interface with a public IP, you need to modify the IPs in the SIP messages to your public IP using SIP Profiles as follows:

In global configuration mode

voice class sip-profiles 1
response ANY sip-header Contact modify "172.x.y.z" "" ! Public IP; 172.x.y.z Private IP of the CUBE
request ANY sip-header Contact modify "172.x.y.z" "" 
response ANY sdp-header Audio-Connection-Info modify "172.x.y.z" ""
response ANY sdp-header Connection-Info modify "172.x.y.z" ""
response ANY sdp-header Session-Owner modify "172.x.y.z" ""
request ANY sdp-header Audio-Connection-Info modify "172.x.y.z" ""
request ANY sdp-header Connection-Info modify "172.x.y.z" ""
request ANY sdp-header Session-Owner modify "172.x.y.z" ""

This can then be applied either globally to the general sip config (sip profiles #) or under the dial-peer config using:

voice-class sip profiles 1

Additionally, it is advisable to define a loopback interface and configure it with your public IP address. Do not advertise this into your network though, as it may cause other problems.

In global configuration mode

interface loopback 0
ip address

Inbound calling

Use translation rules and translation profiles to translate your DIDs to extensions.

  • Create a voice translation rule. For example, the rule below translates 13125489677 to 3005.

In global configuration mode

voice translation-rule 100
rule 1 /13125489677/ /3005/   !  Several rules can be defined. In this case, 3005 is an extension on CUCM
  • Create a translation profile using the rule created:

In global configuration mode

voice translation-profile 100
translate called 100
  • Apply the transition profile to the dial-peer

    translation-profile incoming 100

Configure the dial-peer towards CUCM

In global configuration mode

dial-peer voice 300 voip
destination-pattern 3...           !Matches 3XXX numbers, as translated by the translation profile
session protocol sipv2
session target ipv4:
dtmf-relay rtp-nte cisco-rtp sip-kpml sip-notify

That's it, you've now completed the configuration of Cisco CUBE/ CUCM and can now make and receive calls by using Telnyx as the SIP provider.

Additional Resources

Review our getting started guide to make sure your Telnyx Mission Control Portal account is setup correctly.

Was this page helpful?