CallManager 9 + VirtualBox + Ubuntu 12.04 + GNS3 + SIP

Following on from similar post I did a few years back about CCM7 in VirtualBox with a SIP trunk to a 2621XM, I’ve recreated the process for CCM9 with a few differences.

The final environment looks like the below:

  • Cisco SRP527W ADSL2+ Router
  • Ethernet to Ubuntu 11.04 running as the VirtualBox Host
  • Call Manager 9 Virtual Machine Guest
  • Ubuntu 12.04 Guest
  • GNS3 inside the 12.04 Guest
  • 2621XM running as CUBE inside GNS3
  • SIP trunk between Call Manager 9 and the 2621XM
  • SIP trunk between external provider and the 2621XM (my provider is Internode)

I won’t detail the SRP or VirtualBox Host config – it’s far too simple. The only note to add is to turn SIP ALG on on the SRP and forward 5060-5062 to the IP of your GNS3 router.

Call Manager 9 Build

Follow my previous post about building Call Manager 9 in VirtualBox.

Call Manager 9 SIP Trunk Config

This is reasonably straight forward, just add a new SIP trunk and make sure all your normal DP, CDC, CSS etc are all set.

Make sure you set the Inbound CSS aswell.

Under SIP information add the IP address of your future router interface in GNS3.

I left my security profile as non-secure.

I created a new SIP profile however the standard will work just fine.

GNS3 Build

I followed this guide to install GNS3 in 12.04 as the default apt version didn’t work for me.

Make sure you run GNS3 as root otherwise you’ll have issues making the NIO work.

Add your IOS (I’m running c2600-ipvoicek9-mz.124-15.T14) but any working version with voice should be fine for you.

Add the router and cloud. Add the cloud and add the nio_gen_eth:eth0 nic as shown below.

ccm9gns3

 

Connect the two up and boot your router.

CUBE Config

As this router will be only be performing CUBE my config is pretty light. If you’ve got more requirements on your network you can throw them in, but I’m not sure how well performance will stack up being run inside of a VM. I even managed to crash my VM by doing a debug ccsip all so just be careful.

My external SIP provider is Internode. I receive 1 DID from them which I have to auth for. As I only have 1 DID the way I handle inbound is to translate the 1 DID it to a common number (1000 in my case) that I pass to CCM. From here it can hit a hunt, shared line, TP, DID whatever. Outbound is a similar fashion although I usually translate it in a RP before passing it back to the CUBE.

This is just one method that you can use so don’t expect the config to work if you’ve got different requirements.

x90-cube#sh run
Building configuration...

Current configuration : 2251 bytes
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname x90-cube
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 15
no network-clock-participate slot 1
no network-clock-participate wic 0
ip cef
!
!
!
!
ip name-server 10.10.0.1
multilink bundle-name authenticated
!
!
!
voice service voip
allow-connections sip to sip
sip
bind control source-interface FastEthernet0/0
bind media source-interface FastEthernet0/0
localhost dns:sip.internode.on.net
!
!
voice class codec 1
codec preference 1 g711ulaw
!
!
!
!
!
!
!
!
!
!
!
voice translation-rule 1
rule 1 /1000/ /<YOURDIDHERE>/
!
voice translation-rule 2
rule 1 /<YOURDIDHERE>/ /1000/
rule 2 /<YOURDIDHERE>/ /1000/
!
!
voice translation-profile sip-incoming
translate called 2
!
voice translation-profile sip-outgoing
translate calling 1
!
!
!
!
!
!
archive
log config
hidekeys
!
!
!
!
!
!
interface FastEthernet0/0
ip address 10.10.0.199 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
no ip address
shutdown
duplex auto
speed auto
!
ip forward-protocol nd
ip route 0.0.0.0 0.0.0.0 10.10.0.1
!
ip http server
no ip http secure-server
!
!
!
control-plane
!
!
!
!
!
sccp local FastEthernet0/0
sccp ccm <YOURCCMIPHERE> identifier 1
sccp
!
sccp ccm group 1
bind interface FastEthernet0/0
associate ccm 1 priority 1
!
!
dial-peer voice 1 voip
description Internode incoming to CCM
translation-profile incoming sip-incoming
destination-pattern ....
voice-class codec 1
session protocol sipv2
session target ipv4:<YOURCCMIPHERE>
incoming called-number .T
dtmf-relay sip-notify rtp-nte
!
dial-peer voice 2 voip
description CCM outgoing to Internode
translation-profile outgoing sip-outgoing
destination-pattern 0T
voice-class codec 1
session protocol sipv2
session target dns:sip.internode.on.net
dtmf-relay sip-notify rtp-nte
!
!
sip-ua
credentials username <YOURUSERNAME/DIDHERE> password <YOURPASSWORDHERE> realm BroadWorks
authentication username <YOURUSERNAME/DIDHERE> password <YOURPASSWORDHERE> realm BroadWorks
registrar dns:sip.internode.on.net expires 240
sip-server dns:sip.internode.on.net
!
!
line con 0
logging synchronous
line aux 0
line vty 0 4
!
!
end

That should be everything needed to get up and running. When troubleshooting the CUBE function, debug ccsip messages, debug voice translation and debug voice dialpeer are your friends.

GLHF

One thought on “CallManager 9 + VirtualBox + Ubuntu 12.04 + GNS3 + SIP

Leave a Reply

Your email address will not be published. Required fields are marked *