Warning: count(): Parameter must be an array or an object that implements Countable in /homepages/29/d134578137/htdocs/wp-includes/post-template.php on line 284

Hey guys! Yes, it’s true a CCIE Journey blog post from yours truly, Joe Astorino! I’ve been really busy getting adapted to my new job and writing technical blogs. Additionally, I have been learning a bit about IPT just for my own amusement. I always thought it would be pretty badass to have Cisco IP phones around the house. Well, I got my wish and I want to show you guys HOW I did it. Keep in mind, I am by no means any kind of voice guru (yet) but I was able to set this up with a relatively minimum amount of pain and suffering.

Let’s get into the equipment: I have setup 4 Cisco IP phones. Each main room in my house has it’s own IP phone. I also took it upon myself to do all the cabling myself :) This required a trip to home depot to purchase RJ-45 crimpers, punch-down tool, 500Ft. CAT5e cabling, RJ-45 connectors, and wall-jacks. Whoever buys my house at some point may be a bit disappointed that there are no more phone jacks anywhere lol … oh well. My home router is a Cisco 3725 I have had running for a while. It runs 12.4 advanced enterprise…which I found out actually includes CallManager express 4.1. Wow, sweet! Now all I needed was phones. I could not have done this project without the amazing help of one of my students actually. In a recent bootcamp, I met a student who already had his CCIE voice but was going for R&S. He also happened to be a Cisco SE and he very graciously sent me some phones to play with just for being a halfway decent guy! I have 2x 7941 and 2x 7961 to play with here. On the switch side, I am utilizing a 3550 24 port POE switch. Keep in mind, the 3550 was pre Cisco adapting to the 802.3AF POE standard and puts out the old proprietary Cisco POE. However, the phones will take either or so it is all good! The other SWEET part about this whole thing is that the traditional Telco is not involved at all. A good friend of mine knows a guy that essentially IS the phone company :) Yes, he runs his own phone company local to the area here. Because of that, he can provide me with a SIP trunk to access the outside world. No phone lines coming into my house…simply a SIP trunk to this phone company (at a very reasonable rate).

Let’s get into configs..

On the 3725 router I have 802.1Q sub-interfaces trunking down to my switch. This allows me to have multiple VLANs. I actually have a data VLAN, a wireless VLAN, and a voice VLAN. The data VLAN is the dreaded VLAN 1 because at the time I set it up I was too lazy to change it and have been since. The voice VLAN is VLAN 4. Here are the configs on the router and the switch: Yes, I am running IPv6 in my house 🙂

3725

interface FastEthernet0/0
description LAN
bandwidth 8000
no ip address
ip virtual-reassembly
no ip mroute-cache
load-interval 30
speed 100
full-duplex
max-reserved-bandwidth 100
!
interface FastEthernet0/0.1
bandwidth 8000
encapsulation dot1Q 1 native
ip address 208.83.70.21 255.255.255.252 secondary
ip address 10.1.0.1 255.255.255.0
ip pim sparse-mode
ip nat inside
ip inspect cbac in
ip virtual-reassembly
no ip mroute-cache
ipv6 address 2607:F4B8:2600:C::1/64
!
!
interface FastEthernet0/0.4
description Voice VLAN
bandwidth 1000
encapsulation dot1Q 4
ip address 10.1.4.1 255.255.255.0
ip nat inside
ip inspect cbac in
ip virtual-reassembly

3550 Config

interface FastEthernet0/1
description Router Fa0/0
duplex full
speed 100
switchport trunk encapsulation dot1q
switchport mode trunk

OK simple enough…now we setup our DHCP pools for the various VLANs. Note the insertion of option 150 in the voice pool which points to my UNIX server running TFTP for the LAN. This is where we will store the phone software and configuration files.

ip dhcp pool WARREN-LAN
network 10.1.0.0 255.255.255.0
default-router 10.1.0.1
dns-server 10.1.0.7
domain-name rfc791.ORG
!
ip dhcp pool VOICE
network 10.1.4.0 255.255.255.0
default-router 10.1.4.1
dns-server 10.1.0.7
domain-name rfc791.ORG
option 150 ip 10.1.0.7

The next thing I did was go download the lates SCCP image for the 7941/7961 phones and figure out what the hell all the files were. In the end, I just dumped all the files in the root of my TFTP directory. I also learned that when the phones boot they will look for a config file named SEPmac-address-goes-here. I simply modified the default config file for 7941/7961 and changed a few things in it. Namely, the lines below. The loadinformation tag just points to the OS you want the phones to load. By running the command “create cnf-files” from the telephony-services config prompt, you create default xml config files. Inside of those, it references the CallManager IP address, in my case the sub-interface on my 3725 10.1.4.1.

<timeZone>Eastern Standard/Daylight Time</timeZone>

<loadInformation>SCCP41.8-5-2S</loadInformation>

<processNodeName>10.1.4.1</processNodeName>

OK, so at this point the phones actually get power, boot up, load the image I told them to, and have a default configuration loaded up. Sweet. Too bad I can’t really do anything yet hehe. Lets get into the CallManager Express configurations.

First, we setup some basic stuff that allows sip to sip calls.

voice service voip
allow-connections sip to sip
no supplementary-service sip moved-temporarily
no supplementary-service sip refer
sip
registrar server expires max 3600 min 3600
localhost dns:bono.rfc791.ORG
!
!

Here we have a voice class which defines our encoding…I am using g711ulaw because that is how my SIP provider wants it…
voice class codec 1
codec preference 1 g711ulaw

Here we have some fun stuff…translations! 5555555555 represents my real phone number

This rule here is for setting my caller-ID on outbound calls. My internal extensions are 101 – 104 at the moment..but I figure I won’t have more than 20 phones :) so this regular expression takes anything 101-119 and converts it to my real phone number. So, if Icall out to the PSTN from any phone, it will actually change the caller ID to my real phone number.

voice translation-rule 2
rule 1 /1[01][1-9]$/ /5555555555/
!

This rule simply prepends a 1 to numbers I dial. This is used because my SIP providers asterisk box requires the full 1+number format
voice translation-rule 3
rule 1 /\([2-9]..[2-9]……\)/ /1\1/
!
!

translation-profiles are where we call our translation-rules and tell them what to do with them.

voice translation-profile ANI
translate calling 2
!
voice translation-profile prepend1
translate calling 2
translate called 3

Here we have our various dial-peers configures

dial-peer voice 1 voip
description Incoming Calls From SIP trunk
voice-class codec 1
voice-class sip dtmf-relay force rtp-nte
session protocol sipv2
session target sip-server
incoming called-number .T
dtmf-relay rtp-nte
no vad
!
dial-peer voice 2 voip
description Outbound to SIP Trunk 11-Digits
translation-profile outgoing ANI
destination-pattern 1……….
voice-class codec 1
voice-class sip dtmf-relay force rtp-nte
session protocol sipv2
session target sip-server
dtmf-relay rtp-nte
clid strip name
no vad
!
dial-peer voice 3 voip
description Outbound To SIP Trunk 10-Digits
translation-profile outgoing prepend1
destination-pattern [2-9]..[2-9]……
voice-class codec 1
voice-class sip dtmf-relay force rtp-nte
session protocol sipv2
session target sip-server
dtmf-relay rtp-nte
clid strip name
no vad
!
dial-peer voice 4 voip
description 911 Emergency
translation-profile outgoing ANI
destination-pattern 911
voice-class codec 1
voice-class sip dtmf-relay force rtp-nte
session protocol sipv2
session target sip-server
dtmf-relay rtp-nte
clid strip name
no vad
!
dial-peer voice 5 voip
description 911/411 Services
translation-profile outgoing ANI
destination-pattern [2-9]11
voice-class codec 1
voice-class sip dtmf-relay force rtp-nte
session protocol sipv2
session target sip-server
dtmf-relay rtp-nte
clid strip name
no vad
!
dial-peer voice 6 voip
description International Outgoing Call To SIP Trunk
translation-profile outgoing ANI
destination-pattern 011T
voice-class codec 1
voice-class sip dtmf-relay force rtp-nte
session protocol sipv2
session target sip-server
dtmf-relay rtp-nte
clid strip name
no vad
!
!

Here is the SIP configuration…

sip-ua
retry invite 2
retry register 10
retry options 1
timers connect 100
registrar dns:sip.mysipprovider.net expires 3600
sip-server dns:sip.mysipprovider.net
host-registrar
!
!
!

This is the basic telephony configuration
telephony-service
max-ephones 144
max-dn 100
ip source-address 10.1.4.1 port 2000
auto assign 1 to 1
system message rfc791.ORG Warren
url services http://phone-xml.berbee.com/menu.xml
time-zone 12
max-conferences 8 gain -6
web admin system name joe secret 5 $1$VDco$tBa1qZfDLP1K3LVDkNAdX0
dn-webedit
time-webedit
transfer-system full-consult
create cnf-files version-stamp 7960 Jul 29 2009 03:25:47
!
!
ephone-dn-template 1
description 555-555-5555
!
!

Here we have our ephone-dn entries. An ephone-dn or “ethernet-phone directory number” is basically the IOS software equivalent of an extension. I configure an ephone-dn for each line that I want, including the outside line.

ephone-dn 1
number 101
label Master Bedroom x101
name Master Bedroom
ephone-dn-template 1
!
!
ephone-dn 2
number 102
label Family Room x102
name Family Room
ephone-dn-template 1
!
!
ephone-dn 3 dual-line
number 5555555555
label Outside Line: 555-555-5555
name Joe Astorino
!
!
ephone-dn 4
number 103
label Office x103
name Office
ephone-dn-template 1
!
!
ephone-dn 5
number 104
label Basement Lab x104
name Basement Lab
ephone-dn-template 1
!
!

Here are the ephone configs. an ephone is the actual physical phone configuration. The button mapping is important. button x:y says “for button x on the phone map it to line y”. So for instance here I have button 1:1 2:3 which says for line 1 map it to ephone-dn 1 (x101) and for button 2 map it to ephone-dn 3 (the outside line). I map the outside line to a button on every phone so when somebody calls my outside line all the phones ring.

ephone 1
no multicast-moh
mac-address 001B.D4C6.E936
keepalive 30 auxiliary 0
type 7941
button 1:1 2:3
!
!
!
ephone 2
device-security-mode none
mac-address 0017.5A85.09C3
type 7941
button 1:2 2:3
!
!
!
ephone 3
device-security-mode none
type 7961
!
!
!
ephone 4
no multicast-moh
device-security-mode none
mac-address 001A.E2BD.03CF
type 7961
button 1:5 2:3

That is pretty much it. Like I said I am totally new at this. I’m sure there is something that can be done better but for now I am pretty happy! I have an IP phone in every room. I can pick up the phone and dial the extension of another room. I am labbing in my basement. A call comes in for the wife who is upstairs watching TV in the bedroom…oh hang on , let me just transfer you :) LOL

Here is a pic:

IPT

Comments

3 Responses to “Tutorial: IP Telephony For Your House”

  1. CCIETalk on August 3rd, 2009 10:33 am

    Welcome to the SIP world! Where are you located?

  2. Joe Astorino on August 3rd, 2009 3:24 pm

    I am in Warren, MI. Well, the router runs SIP to my provider, but I am not FULL SIP yet, still running SCCP on the phones : ) Maybe that will be another project down the road!

  3. Keith Craycraft on August 4th, 2009 8:22 am

    Welcome to Call Manager express world.

    Are you using unity express voicemail as well?

Leave a Reply