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://10.10.2.13/sip88xx.11-5-1-18.loads flash0:loads/8800/ Destination filename [loads/8800/sip88xx.11-5-1-18.loads]? Accessing tftp://10.10.2.13/sip88xx.11-5-1-18.loads... Loading sip88xx.11-5-1-18.loads from 10.10.2.13 (via Ethernet0/0): ! [OK - 1225 bytes] 1225 bytes copied in 0.010 secs (122500 bytes/sec) Branch01-RTR01#copy tftp://10.10.2.13/vc488xx.11-5-1-18.sbn flash0:loads/8800/ Destination filename [loads/8800/vc488xx.11-5-1-18.sbn]? Accessing tftp://10.10.2.13/vc488xx.11-5-1-18.sbn... Loading vc488xx.11-5-1-18.sbn from 10.10.2.13 (via Ethernet0/0): !!!!!!!!!!!!!!!!! [OK - 4165744 bytes] 4165744 bytes copied in 4.428 secs (940773 bytes/sec) Branch01-RTR01#copy tftp://10.10.2.13/fbi88xx.BE-01-010.sbn flash0:loads/8800/ Destination filename [loads/8800/fbi88xx.BE-01-010.sbn]? Accessing tftp://10.10.2.13/fbi88xx.BE-01-010.sbn... Loading fbi88xx.BE-01-010.sbn from 10.10.2.13 (via Ethernet0/0): ! [OK - 99928 bytes] 99928 bytes copied in 0.165 secs (605624 bytes/sec) Branch01-RTR01#copy tftp://10.10.2.13/kern88xx.11-5-1-18.sbn flash0:loads/8800/ Destination filename [loads/8800/kern88xx.11-5-1-18.sbn]? Accessing tftp://10.10.2.13/kern88xx.11-5-1-18.sbn... Loading kern88xx.11-5-1-18.sbn from 10.10.2.13 (via Ethernet0/0): !!!!!!!!!!!!!!!!! [OK - 4243868 bytes] 4243868 bytes copied in 4.774 secs (888954 bytes/sec) Branch01-RTR01#copy tftp://10.10.2.13/rootfs88xx.11-5-1-18.sbn flash0:loads/8800/ Destination filename [loads/8800/rootfs88xx.11-5-1-18.sbn]? Accessing tftp://10.10.2.13/rootfs88xx.11-5-1-18.sbn... Loading rootfs88xx.11-5-1-18.sbn from 10.10.2.13 (via Ethernet0/0): !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [OK - 69022032 bytes] 69022032 bytes copied in 71.642 secs (963430 bytes/sec) Branch01-RTR01#copy tftp://10.10.2.13/sb288xx.BE-01-019.sbn flash0:loads/8800/ Destination filename [loads/8800/sb288xx.BE-01-019.sbn]? Accessing tftp://10.10.2.13/sb288xx.BE-01-019.sbn... Loading sb288xx.BE-01-019.sbn from 10.10.2.13 (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 10.255.0.1 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 10.10.13.2 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 0.0.0.0 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
DHCP
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 10.10.15.0 255.255.255.0 Branch01-RTR01(dhcp-config)# default-router 10.10.15.254 Branch01-RTR01(dhcp-config)# option 150 ip 10.255.0.1
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 10.10.15.108 1 1 3001$ REGISTERED 2 00DA.5527.A9A8 10.10.15.107 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:10.255.0.2 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:10.255.0.1 Branch02-RTR(config-dial-peer)# codec g711ulaw