Cisco: Configure a Cisco CME IP Trunk

In this article we we walk you though configuring a Cisco Call Manager Express IP Trunk with Telnyx.

Telnyx Sales avatar
Written by Telnyx Sales
Updated over a week ago

Cisco Unified Communications Manager Express (CME) is a feature-rich and software-based entry-level telephony solution that is integrated directly into Cisco IOS, allowing small-businesses or small enterprise branches to deploy and manage voice and data on a single platform.

Cisco CME routers to deliver key-system or hybrid PBX functionality, providing almost all standard telephony features, as well as many advanced features not available with traditional telephony solutions.

Additional documentation:

Instructions for configuring a CME credentials trunk

This guide will help you establish a connection between Cisco CME, and your Telnyx Mission Control Portal by showing you a sample trunk configuration using IP authentication. This assumes you've already completed the installation and telecommunication-applications deployment, per the pre-requisites.

In this activity you will:


  • Your IP network is operational and you can access Cisco web.

  • You have a valid account.

  • You have access to a TFTP server for downloading files.

  • Cisco router and all recommended services hardware for Cisco Unified CME is installed. For installation information, see Install Cisco Voice Services Hardware

  • Recommended Cisco IOS IP Voice or higher image is downloaded to flash memory in the router. To determine which Cisco IOS software release supports the recommended Cisco Unified CME version, see Cisco Unified CME and Cisco IOS Software Compatibility Matrix. For installation information, see Install Cisco IOS Software

  • Cisco IOS® Version 15.1(2)T and later

    • To make outbound calls, Telnyx requires either a valid caller ID from your device or a caller ID override enabled on your SIP connection.

  • Have already made the main Cisco CME installation and telecommunication-applications deployment.

Video Walkthrough

Setting up your Telnyx SIP trunk:

Note: Video walkthrough for Cisco CME configuration coming soon. Check back as we update our docs.

1. Configure a Dial-Peer to Telnyx

This is the layout of our set-up:


Dial-peer configuration

In global configuration mode

dial-peer voice 100 voip        ! 100 is an arbitrary number
translation-profile incoming 100  ! Used to translate DIDs to extensions
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 pre-configured sip profile. Used to modify headers
session target ipv4:  ! or replace with
incoming called-number 1[2-9]..[2-9]......  !Pattern-match for incoming DIDs
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 !Media IP address

Specify general SIP parameters

In global configuration mode

voice service voip
mode cme
allow connections sip to sip  ! Permit SIP to SIP calls
bind all source-interface  !Bind control and medial to an interface with a IP, if one is available
early-offer forced
midcall-signaling passthru

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 a public IP, you need to modify the IPs in the SIP messages to your public IP using SIP Profiles as shown below:

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 CME
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 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 translation profile to the dial-peer:

translation-profile incoming 100

That's it, you've now completed the configuration of your Cisco CUBE/CUCM SIP Trunk

Additional Resources

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

Additionally, check out:

Did this answer your question?