Apple in a Cisco world

I’m a network engineer by trade and one of the things that I absolutely must have in a laptop is console access. This isn’t a big deal aside from it being difficult to find a laptop with a serial port anymore. IOGear makes a very nice USB to Serial dongle that I’ve been happy with. I prefer Putty also, and there’s a serial port shim for it called wcons.d.

Ok, so that’s great and all, but what else must I have in a laptop. Unfortunately I must have Visio. Yep…has to be MS Visio too. That’s a real bummer when it comes to Apple because MS hasn’t released Visio for OS X. I doubt they ever will. So for diagram type applications I’m left with Omnigraffle. Omnigraffle is a pretty sweet product but it has one big flaw. It can only import Visio XML files.

So, please someone….ask someone at MS to port Visio. If I had Visio I’d get a Powerbook in a heartbeat. Hmm…maybe you don’t want to mention that to the MS folks.

Why’s that such a big deal? OS X is a great OS. Plus, the laptops are sweet! GE on the 15″ Powerbook! OS X would allow me to do all of the things I have to do in Linux in a VirtualPC machine now. TFTP server, FTP server, Apache…all available in OS X very easily, if I want.

Oh for Visio…

CallManager Installation steps

**These directions are for non-production, non-Cisco blessed lab configurations. My quess is that it’ll still work fine for production, but use it at your own peril!***

I’ve been installing CM on various servers lately and I’ve found that there’s a path that should be followed for best results. So, here it is:

Install win2k.
Install all MS patches from the WindowsUpdate site.
Run the registry hacks to allow it to install on anything.
Install Cisco’s OS-Update patch to get to 2000.2.7
Install Cisco’s OS-Update patch to get to 2000.2.7sr2
Install CM 4.0(1)
Install CM 4.0(2a) patch
Install CM 4.1(2) patch

I also found that one of the steps, I think the 4.0(2a) patch, likes it if you leave a cd in the drive. I just leave the CM install CD in there.

I haven’t tried the 4.1(3) update yet as the docs insist that 1gb of ram is required. Seeing as how I’m having sub-optimal performance on systems running 256mb of ram, I’d rather not push it at this point. When I can get a system closer to 1gb I’ll try upgrading it.

CallManager upgrade procedures

Ran into something screwy trying to install CM update 4.0(2a) on a new CM 4.0(1) install. I kept getting an error message that said something like “Device not ready”. I finally checked out the install logs and discovered that it was looking for a file on the CD-ROM. I stuck the CM install CD back in and now it seems to have worked. Funny thing is, the file it was looking for isn’t on the CD. Anyway, what’s so important about 4.0(2a)? Well, as far as I can tell, you need it to install 4.1(2), which is really what I want. Also, just noticed that 4.1(3) came out about a week ago. I’ll have to try that out.

Asterisk dial plans

Per Steve’s request, here’s what I have in the extensions_custom.conf file in Asterisk:

[macro-dialout-callmanager]

exten => s,1,ChanIsAvail(SIP/callman01)
exten => s,2,Cut(AVAILCHAN=AVAILCHAN,,1)
exten => s,3,Dial(${AVAILCHAN}/${ARG1})
exten => s,4,Hangup

exten => s,102,Congestion

[outbound-cm]

exten => _20XX,1,Macro(dialout-callmanager,${EXTEN})
exten => i,1,Congestion

[from-broadvoice]
exten => 2100,1,Macro(dialout-callmanager,${EXTEN})

And for the sip.conf:


[callman01]
type=friend
context=from-internal
host=192.168.169.10
disallow=all
allow=ulaw
allow=alaw
nat=no
canreinvite=yes
qualify=yes

I set it to “from-internal” so that calls from the CM would be treated just like a softphone attached to Asterisk. I didn’t want to have any “outside” to “outside” hairpinning restrictions causing a problem.

Cisco CallManager, managed routers and CallerID

I’ve been running Cisco CallManager Express for almost a year now and it’s worked pretty well. I hadn’t installed Unity yet so I was still using a good old answering machine off of a Cisco ATA 186. Time to start learning CallManager though, so I went through setting up CM. My FXO port is still on the 1760-V though so I needed to network that to CM as my PSTN gateway. The most obvious way to do this is to configure CM to “manage” the router as an MGCP device. Here’s Cisco’s instructions for doing this. Work’s nicely as the CM will then push config changes to the router based on configuration’s on the CM. The only problem I had was that Caller-ID quit working. I found a link on Cisco’s site that flat out said it’s not supported on CM4.1 and MGCP to a VIC2-FXO2. How much does that suck.

My solution was to reconfigure the router as a CallManager Express box with very little config. All I really have is:

telephony-service
fxo hook-flash
max-conferences 4

Of course, you still have to have some basic dial-patterns configured.


dial-peer voice 2000 voip
destination-pattern 2…
session target ipv4:192.168.169.10
codec g711ulaw
no vad
!
dial-peer voice 8 pots
destination-pattern 8.T
port 0/0

And the FXO port:

voice-port 0/0
timing hookflash-out 50
connection plar 2100
caller-id enable

Then, in CM, I set up CME as an Inter-Cluster Trunk (non-gatekeeper controlled). The configuration is pretty simple in there. Caller ID now works again.

BroadVoice and Asterisk…not as simple as their website suggests

Ok, this one’s for Steve:

I recently set up CallManager 4.1(2) and Unity 4.0 at home. I have a Cisco 1760-V with an FXO that I’m using as my PSTN gateway. I’ll cover connection of the router to the CallManager in another post. After I got that working I setup Asterisk using the Asterisk@Home ISO. First tested it by configuring a couple of X-Ten Lite softphones. I’ll also save connection of Asterisk to CM for a later post. I was then able to dial from a softphone to a Cisco phone and back. Not a big deal.

Ok, why run Asterisk if I have CallManager working just fine? I wanted to use a service like Vonage but not have to get an ATA from them. There are a number of companies out there that provide VoIP with Bring Your Own Device (BYOD) plans available. After looking around a bit I chose BroadVoice. BV offers $10 sign up for BYOD and a “Lite” plan for $6/month. I only get 100 minutes outbound with that but it’ll be good for testing.

The nitty gritty. BV has a sample Asterisk configuration on their website but I found it to be…lacking. It’s not clear what the password should be. (side note, I just looked at the instructions again and they must have updated them in the last few days. It’s much better now but still not as clear as it needs to be.) Once you are a member of BV there is a section in the account portal, account tab, “Your Devices”. Clicking on this device will show a sample config with your info plugged in…the “auth_password” is what you need for Asterisk. Once you have that, you need to set up the sip.conf file like mine here:

[general]

port = 5060 ; Port to bind to (SIP is 5060)
bindaddr = 0.0.0.0 ; Address to bind to (all addresses on machine)
disallow=all
allow=ulaw
allow=alaw
;context = from-broadvoice ; Send BV SIP callers to this context
;callerid = Unknown
register => 443430YYYY@sip.broadvoice.com:XXXXXXX:443430YYYY@sip.broadvoice.com/ZZZZ
externip = brookehouse.homedns.org

[sip.broadvoice.com]
type=peer
user=phone
host=sip.broadvoice.com
fromdomain=sip.broadvoice.com
fromuser=443430YYYY
secret=XXXXXXXX
username=4434300465
insecure=very
context=from-broadvoice
authname=443430YYYY
dtmfmode=inband
;Disable canreinvite if you are behind a NAT
canreinvite=no
;nat=yes

The XXXXXX’s are the “auth_password” from before and the ;’s are commented lines. For some reason the order of the lines is important. I struggled with that little trick for quite a while. Of course, configuration of the dial-plan is still necessary but it should be connected to BV at that point. The YYY’s and ZZZ’s are just to hide some stuff for posting to the Internet

More CallManager caveats to come…

Sharing my voice

Wow…long time no post…I’m sure I’m going to get readers at this pace! 🙂

Ok, I really do want to start updating this. I’ve been fiddling with CallManager, Unity and Asterisk and I feel compelled to share. There are some peculiarities with getting all of this working.

Cisco and trunking voice over fiber

I’ve been working on a lot of VoIP lately so you can expect this blog to focus on that quite a bit. Most of what I’m doing is with Cisco’s VoIP gear including Call Manager (CM) and Call Manager Express (CME). Cisco’s site is excellent in terms of technical support, but sometimes it’s lacking when you are trying to do something a little different from “The Cisco Way”. For instance, how do you make Cisco VoIP phones work without configuring your switch ports with auxlvan or voice vlan commands? Setting it up with a simple 802.1q trunk doesn’t work. Turns out, the Cisco VoIP phones are specifically looking for auxvlan info in the CDP message. Pure trunking doesn’t supply that. We had to manually configure the Admin VLAN on the phone itself. Yuck.

You might ask why this is even necessary. Well, fiber ports don’t support the auxvlan command. So if you are extending VoIP service to phones that are attached via fiber, you must use strict 802.1q tagging. The IOS commands are:

switchport trunk encapsulation dot1q
switchport trunk native vlan 2
switchport trunk allowed vlan 1,2,4-4094
switchport mode trunk

In this test case, vlan 1 is the voice vlan and vlan 2 is the data. Making vlan 2 native makes it untagged, which is what the phone is looking for when passing traffic to the PC port on the phone. Again, this requires the vlan to be manually set on the phone.