Phoning In it – CUCME with SIP Phones


This short lab in the Phoning it in series  will go over the basics of registering some Cisco IP Phones (8841s in my case) to some CUCME routers.



TFTP Setup

First we’ll make a directory in flash called loads and another directory for the phone model.

Branch01-RTR01#mkdir flash0:loads/8800
 Create directory filename [loads/8800]?
 Created dir flash0:loads/8800

Next we’ll copy the SIP files over to the routers using TFTP.

Branch01-RTR01#copy tftp:// flash0:loads/8800/
 Destination filename [loads/8800/sip88xx.11-5-1-18.loads]?
 Accessing tftp://
 Loading sip88xx.11-5-1-18.loads from (via Ethernet0/0): !
 [OK - 1225 bytes]

1225 bytes copied in 0.010 secs (122500 bytes/sec)

Branch01-RTR01#copy tftp:// flash0:loads/8800/
 Destination filename [loads/8800/vc488xx.11-5-1-18.sbn]?
 Accessing tftp://
 Loading vc488xx.11-5-1-18.sbn from (via Ethernet0/0): !!!!!!!!!!!!!!!!!
 [OK - 4165744 bytes]

4165744 bytes copied in 4.428 secs (940773 bytes/sec)

Branch01-RTR01#copy tftp:// flash0:loads/8800/
 Destination filename [loads/8800/fbi88xx.BE-01-010.sbn]?
 Accessing tftp://
 Loading fbi88xx.BE-01-010.sbn from (via Ethernet0/0): !
 [OK - 99928 bytes]

99928 bytes copied in 0.165 secs (605624 bytes/sec)

Branch01-RTR01#copy tftp:// flash0:loads/8800/
 Destination filename [loads/8800/kern88xx.11-5-1-18.sbn]?
 Accessing tftp://
 Loading kern88xx.11-5-1-18.sbn from (via Ethernet0/0): !!!!!!!!!!!!!!!!!
 [OK - 4243868 bytes]

4243868 bytes copied in 4.774 secs (888954 bytes/sec)

Branch01-RTR01#copy tftp:// flash0:loads/8800/
 Destination filename [loads/8800/rootfs88xx.11-5-1-18.sbn]?
 Accessing tftp://
 Loading rootfs88xx.11-5-1-18.sbn from (via Ethernet0/0): !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 [OK - 69022032 bytes]

69022032 bytes copied in 71.642 secs (963430 bytes/sec)

Branch01-RTR01#copy tftp:// flash0:loads/8800/
 Destination filename [loads/8800/sb288xx.BE-01-019.sbn]?
 Accessing tftp://
 Loading sb288xx.BE-01-019.sbn from (via Ethernet0/0): !!
 [OK - 431180 bytes]

431180 bytes copied in 0.544 secs (792610 bytes/sec)

Once all the files are copied we will go ahead and make TFTP server entries and set the alias so TFTP believes the files are in the root of flash.

Branch01-RTR01(config)#tftp-server flash0:loads/8800/sip88xx.11-5-1-18.loads alias sip88xx.11-5-1-18.loads
Branch01-RTR01(config)#tftp-server flash0:loads/8800/vc488xx.11-5-1-18.sbn alias vc488xx.11-5-1-18.sbn
Branch01-RTR01(config)#tftp-server flash0:loads/8800/fbi88xx.BE-01-010.sbn alias fbi88xx.BE-01-010.sbn
Branch01-RTR01(config)#tftp-server flash0:loads/8800/kern88xx.11-5-1-18.sbn alias kern88xx.11-5-1-18.sbn
Branch01-RTR01(config)#tftp-server flash0:loads/8800/rootfs88xx.11-5-1-18.sbn alias rootfs88xx.11-5-1-18.sbn
Branch01-RTR01(config)#tftp-server flash0:loads/8800/sb288xx.BE-01-019.sbn alias sb288xx.BE-01-019.sbn

Phone Type Setup

If your router doesn’t natively recognize your phone model you can define the phone type yourself by using the voice register pool-type command. In it you can define a few parameters how many phone lines the phone model supports and also select a reference model to use as a template. I’m using Cisco 8841 phones and I picked the 7941 as a reference.

Note: If your phone is already listed in the router then you can skip this step.

Branch01-RTR01(config)#voice register pool-type 8841
 Branch01-RTR01(config-register-pooltype)# xml-config maxNumCalls 3
 Branch01-RTR01(config-register-pooltype)# xml-config busyTrigger 3
 Branch01-RTR01(config-register-pooltype)# phoneload-support
 Branch01-RTR01(config-register-pooltype)# num-lines 5
 Branch01-RTR01(config-register-pooltype)# description Cisco IP Phone 8841
 Branch01-RTR01(config-register-pooltype)# reference-pooltype ?
 3905 Cisco SIP Phone 3905
 3911 Cisco SIP Phone 3911
 3951 Cisco SIP Phone 3951
 6901 Cisco SIP Phone 6901
 6911 Cisco SIP Phone 6911
 6921 Cisco SIP Phone 6921
 6941 Cisco SIP Phone 6941
 6945 Cisco SIP Phone 6945
 6961 Cisco SIP Phone 6961
 7821 Cisco SIP Phone 7821
 7841 Cisco SIP Phone 7841
 7861 Cisco SIP Phone 7861
 7906 Cisco SIP Phone 7906
 7911 Cisco SIP Phone 7911
 7941 Cisco SIP Phone 7941
 7941GE Cisco SIP Phone 7941GE
 7942 Cisco SIP Phone 7942
 7945 Cisco SIP Phone 7945
 7961 Cisco SIP Phone 7961
 7961GE Cisco SIP Phone 7961GE
 7962 Cisco SIP Phone 7962
 7965 Cisco SIP Phone 7965
 7970 Cisco SIP Phone 7970
 7971 Cisco SIP Phone 7971
 7975 Cisco SIP Phone 7975
 8941 Cisco SIP Phone 8941
 8945 Cisco SIP Phone 8945
 8961 Cisco SIP Phone 8961
 9951 Cisco SIP Phone 9951
 9971 Cisco SIP Phone 9971
 ATA-187 Cisco Analog Phone Adapter ATA 187
 CUCIConnect Cisco Unified Communications Integration for WebEx Connect
 CiscoMobile-iOS Cisco Mobile App on iPhone
 DX650 Cisco Desktop Collaboration Experience DX650
 Jabber-Android Cisco Jabber App on Android
 Jabber-CSF-Client Cisco Jabber application client based on CSF device type

Branch01-RTR01(config-register-pooltype)# reference-pooltype 7941

Voice Register

The voice register global command is the SIP equivalent of SCCP’s telephony-service, in it you define the max number of phones (called pools) and DNs, the source-ip used for registration and the phone loads.

mode cme sets the SIP service to run in CME mode. The other option is SRST which is a fallback mode if CUCM fails.

source-address is the address on the router that listens for SIP requests
max-dn is the max number of SIP phone numbers being allowed on the router
max-pools is the max number of SIP phones allowed on the router.
load  maps the phone model with the proper firmware on the router.
tftp-path tells the router where to store the SIP phone configuration files if you want to change it.

Branch01-RTR01(config)#voice register global
 Branch01-RTR01(config-register-global)# mode cme
 Branch01-RTR01(config-register-global)# source-address port 5060
 Branch01-RTR01(config-register-global)# max-dn 30
 Branch01-RTR01(config-register-global)# max-pool 10
 Branch01-RTR01(config-register-global)# load 8841 sip88xx.11-5-1-18.loads
 Branch01-RTR01(config-register-global)# timezone 6
 Branch01-RTR01(config-register-global)# ntp-server mode unicast

The create profile command generates the phone configuration files, you’ll need to do this to apply changes to phones.

Voice Service

Lastly for the global setup we’ll need to allow the router to act as a SIP registrar with the voice service voip.

The ip address trusted list allows any SIP address to contact the router. This really just makes things easier for labbing. If you don’t do this then only IP addresses defined in dial-peers will be able to contact the router with SIP traffic.

The allow-connections sip to sip enables SIP connections. Since we are only dealing with SIP at the moment we don’t need to allow anything else.

Under sip we put the specific SIP server settings.

bind all source-interface tells the router which interface to send SIP traffic from. You can split the media and control traffic between different interfaces if you want.

register server allows SIP phones to register with the router.

 Branch01-RTR01(config)#voice service voip
 Branch01-RTR01(conf-voi-serv)# ip address trusted list
 Branch01-RTR01(cfg-iptrust-list)# ipv4
 Branch01-RTR01(cfg-iptrust-list)# allow-connections sip to sip
 Branch01-RTR01(conf-voi-serv)# sip
 Branch01-RTR01(conf-serv-sip)# bind control source-interface Loopback0
 Branch01-RTR01(conf-serv-sip)# bind media source-interface Loopback0
 Branch01-RTR01(conf-serv-sip)# registrar server


Just like before we’ll use the routers to provide DHCP and set Option 150 to be the IP address specified in the voice register global

Branch01-RTR01(config)#ip dhcp pool VOICE
Branch01-RTR01(dhcp-config)# network
Branch01-RTR01(dhcp-config)# default-router 
Branch01-RTR01(dhcp-config)# option 150 ip

The Other Router

The other branch router is setup in a similar fashion.

Phone Configs

At this point we can work on getting some basic phone functionality going.

The number is the DN

Name is the Caller ID for the line.

The label is what is shown on the phone line

Branch01-RTR01(config)#voice register dn 1
Branch01-RTR01(config-register-dn)#number 3001
Branch01-RTR01(config-register-dn)#name Batman
Branch01-RTR01(config-register-dn)#label Batman - 3001
Branch01-RTR01(config-register-dn)#voice register dn 2
Branch01-RTR01(config-register-dn)#number 3002
Branch01-RTR01(config-register-dn)#name Aquaman
Branch01-RTR01(config-register-dn)#label Aquaman - 3002
Branch02-RTR(config)#voice register dn 1
Branch02-RTR(config-register-dn)# number 4001
Branch02-RTR(config-register-dn)# name Wonder Woman
Branch02-RTR(config-register-dn)# label Wonder Woman - 4001

The phone is defined with the voice register pool commands, we need to enter the phone’s mac address and the phone type for the phone to register. The number command binds the voice register dn with the physical phone line.

Branch01-RTR01(config)#voice register pool 1
Branch01-RTR01(config-register-pool)#id mac 00DA.5527.AC72
Branch01-RTR01(config-register-pool)#type 8841
Branch01-RTR01(config-register-pool)#number 1 dn 1
Branch01-RTR01(config-register-pool)#voice register pool 2
Branch01-RTR01(config-register-pool)#id mac 00DA.5527.A9A8
Branch01-RTR01(config-register-pool)#type 8841
Branch01-RTR01(config-register-pool)#number 1 dn 2

Here is the Branch02 phone setup.

Branch02-RTR(config)#voice register pool 1
Branch02-RTR(config-register-pool)# id mac 00DA.5527.E849
Branch02-RTR(config-register-pool)# type 8841
Branch02-RTR(config-register-pool)# number 1 dn 1

When we are done we need to generate the configuration files under voice register global

Branch02-RTR(config)#voice register global
Branch02-RTR(config-register-global)#create profile

At this point we should see the phones start to register

Branch01-RTR01#show voice register pool all brief 
Pool ID IP Address Ln DN Number State
==== =============== =============== == === ==================== ============
1 00DA.5527.AC72 1 1 3001$ REGISTERED 
2 00DA.5527.A9A8 1 2 3002$ REGISTERED

Finally we need to add some dial-peers so the branches can phone each other.

Branch01-RTR01(config)#dial-peer voice 4000 voip
Branch01-RTR01(config-dial-peer)#destination-pattern 4...
Branch01-RTR01(config-dial-peer)#session protocol sipv2
Branch01-RTR01(config-dial-peer)#session target ipv4:
Branch01-RTR01(config-dial-peer)#codec g711ulaw

Branch02-RTR(config)#dial-peer voice 3000 voip
Branch02-RTR(config-dial-peer)# destination-pattern 3...
Branch02-RTR(config-dial-peer)# session protocol sipv2
Branch02-RTR(config-dial-peer)# session target ipv4:
Branch02-RTR(config-dial-peer)# codec g711ulaw




Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s