<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mark Holloway</title>
	<atom:link href="http://www.markholloway.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.markholloway.com/blog</link>
	<description>This is a location to hold various technical notes about Service Provider and Enterprise VoIP</description>
	<lastBuildDate>Wed, 01 Sep 2010 02:10:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Retrieve Music on Hold files from UCM and Stream them from Router Flash</title>
		<link>http://www.markholloway.com/blog/?p=749</link>
		<comments>http://www.markholloway.com/blog/?p=749#comments</comments>
		<pubDate>Sun, 29 Aug 2010 17:05:02 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Cisco]]></category>

		<guid isPermaLink="false">http://www.markholloway.com/blog/?p=749</guid>
		<description><![CDATA[This is a brief explanation of how to retrieve the Music on Hold files from Cisco Unified Communications Manager 7 and load the files into a router&#8217;s flash for remote-site streaming directly from the router.  Alternatively, if you have Call Manage Express and do not care about using a G729 audio file then you may [...]]]></description>
			<content:encoded><![CDATA[<p>This is a brief explanation of how to retrieve the Music on Hold files from Cisco Unified Communications Manager 7 and load the files into a router&#8217;s flash for remote-site streaming directly from the router.  Alternatively, if you have Call Manage Express and do not care about using a G729 audio file then you may use <strong>music-on-hold.au</strong> file which makes this entire task much simpler. The only difference between audio files from UCM versus CME is the actual music that is played.  UCM plays a style of music that is along the lines of the New Age genre and CME uses a song where a piano is the main instrument.</p>
<p><strong>Part 1:</strong></p>
<p>In order to complete this process you must have a Secure FTP (SFTP) server available on your network and reachable by the UCM Publisher or Subscriber.  If you don&#8217;t already have an SFTP server on your network you can use CentOS, FreeBSD, RHEL, Mac OS X, or any Unix-based platform where SFTP is natively part of the OS.</p>
<p>The same principle applies whether you want the G711 or G729 file.  In this example I show how to retrieve the G729 file.</p>
<p>Perform the following steps.</p>
<ol>
<li>SSH to the UCM Publisher or Subscriber node.</li>
<li>Enter the following command <strong>file list activelog mohprep/*</strong> and note the list of files displayed.</li>
<li>In this case we want to SFTP the file <strong>SampleAudioSource.g729.wav </strong>to our SFTP server</li>
<li>Enter the following command <strong>file get activelog mohprep/SampleAudioSource.g729.wav</strong></li>
<li>The following information will be displayed. Enter the appropriate SFTP information when prompted.</li>
</ol>
<p>___</p>
<p>Please wait while the system is gathering files info &#8230;done.<br />
Sub-directories were not traversed.<br />
Number of files affected: 1<br />
Total size in Bytes: 2702728<br />
Total size in Kbytes: 2639.3828<br />
Would you like to proceed [y/n]? y</p>
<p>SFTP server IP: 177.1.10.2<br />
SFTP server port [22]:<br />
User ID: mark<br />
Password: *********</p>
<p>.<br />
Transfer completed.</p>
<p>___</p>
<p>At this point the file <strong>SampleAudioSource.g729.wav </strong>now resides on the SFTP server.  Copy this file to a TFTP server and issue the command <strong>copy tftp flash</strong> on the router the file should reside on.  In my case the same Linux server used for SFTP is also a TFTP server.  Any Unix-like OS is capable of supporting SFTP and TFTP.</p>
<p>router# <strong>copy tftp flash</strong><br />
Address or name of remote host []? <strong>177.1.10.2</strong><br />
Source filename []? <strong>SampleAudioSource.g729.wav</strong><br />
Destination filename [<strong>SampleAudioSource.g729.wav</strong>]?<br />
Accessing tftp://177.1.10.2/SampleAudioSource.g729.wav&#8230;<br />
Loading SampleAudioSource.g729.wav from 177.1.10.2 (via Serial0/3/0.1): !!<br />
[OK - 332600 bytes]</p>
<p>332600 bytes copied in 51.848 secs (6415 bytes/sec)</p>
<p><strong>Part 2:</strong></p>
<p>In the event the branch router should stream MoH directly from the router&#8217;s flash rather than utilize the WAN to support unicast or multicast MoH between UCM and the branch site, you must configure SRST and the relevant multicast and moh parameters on the router.  It is important to note that in order to accomplish this there must be a MoH Server configured on UCM to support multicast.  This server should have a Max Hop of 1 and be assigned to a Media Resource Group (such as MRG_BR1) which should be assigned to a Media Resource Group List (MRGL_BR1) and the MRGL should be assigned to the Device Pool for BR1 (DP_BR1). Make sure the MoH server in UCM uses 239.1.1.1 in order to match the example router configuration below.  Increment multicast by IP rather than port.</p>
<p>On the router:</p>
<p>Voice VLAN Interface IP = 172.16.1.1<br />
Loopback 0 Interface IP= 172.16.254.254</p>
<p>Enter config mode on the router and enable multicast routing</p>
<p>ip multicast-routing<br />
interface vlan 4 <strong>&lt; Voice VLAN</strong><br />
ip pim dense-mode<br />
interface loopback0<br />
ip pim dense-mode</p>
<p>Enable call-manager-fallback or use telephony-service in SRST mode</p>
<p>call-manager-fallback<br />
max-ephones 1<br />
max-dn 1<br />
ip source-address &lt;voice vlan&gt;<br />
moh music-on-hold.au<br />
multicast moh 239.1.1.1 port 16384 route 172.16.254.254 172.16.1.1</p>
<p>ccm-manager music-on-hold bind vlan 4</p>
<p>UCM believes the multicast stream only requires one hop to reach the destination.  Since this is not possible because the branch router is more than one hop from UCM, the audio file referenced in Flash by SRST will begin a multicast stream.  When phones put a call on hold the music streamed from Flash is what the held party will hear (including PSTN callers). For sites with low bandwidth requirements this helps reduce overall bandwidth consumption.  It also provides flexibility for the branch site to use their own custom audio files without the extra work of importing them into UCM.</p>
<p>If the branch router is configured as an H323 Gateway with UCM then perform the following additional steps:</p>
<p>voice class codec 1<br />
codec preference 1 g711ulaw<br />
codec preference 2 g729r8</p>
<p>dial-peer voice 10 voip<br />
description TO UCM SUBSCRIBER NODE<br />
preference 1<br />
destination-pattern 2&#8230;$<br />
<strong>voice-class codec 1</strong><br />
session target ipv4:10.10.10.1<br />
dtmf-relay h245-alphanumeric<br />
no vad</p>
<p>dial-peer voice 11 voip<br />
description TO UCM PUBLISHER NODE<br />
preference 2<br />
destination-pattern 2&#8230;$<br />
<strong>voice-class codec 1</strong><br />
session target ipv4:10.10.10.2<br />
dtmf-relay h245-alphanumeric<br />
no vad</p>
<p>Issue the following debug command to validate the MoH multicast stream:</p>
<p>debug ephone moh</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markholloway.com/blog/?feed=rss2&amp;p=749</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cisco CME: Join and Leave tones for a MeetMe Conference</title>
		<link>http://www.markholloway.com/blog/?p=1021</link>
		<comments>http://www.markholloway.com/blog/?p=1021#comments</comments>
		<pubDate>Thu, 15 Jul 2010 23:46:00 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Cisco]]></category>

		<guid isPermaLink="false">http://www.markholloway.com/blog/?p=1021</guid>
		<description><![CDATA[MeetMe conferencing with Call Manager Express allows a CME phone to go off hook, press the MeetMe softkey, and dial the MeetMe bridge number to start a conference. Any other CME subscriber or off-net party may dial the MeetMe number to join the conference.  By default CME does not play tones when participants join or [...]]]></description>
			<content:encoded><![CDATA[<p>MeetMe conferencing with Call Manager Express allows a CME phone to go off hook, press the MeetMe softkey, and dial the MeetMe bridge number to start a conference. Any other CME subscriber or off-net party may dial the MeetMe number to join the conference.  By default CME does not play tones when participants join or leave the bridge. Adding this capability requires the creation of a voice class for both the join tones and leave tones where tone frequencies are defined and then later referenced in the dspfarm profile.  In order to perform the following configuration you should already have hardware conferencing configured on CME.  Reference <a title="CME Hardware DSP" href="http://www.markholloway.com/blog/?p=1023" target="_blank">this</a> post for assistance.</p>
<p>1. Configure a number to be a MeetMe Conference Bridge</p>
<p>ephone-dn  10  octo-line<br />
number 4454 no-reg primary<br />
conference meetme</p>
<p>2. Configure an ephone template that includes the MeetMe Softkey. This is so CME subscribers can easily start a conference.</p>
<p>ephone-template  1<br />
softkeys remote-in-use  CBarge Newcall<br />
softkeys seized  Redial Endcall <strong>Meetme</strong> Pickup Gpickup Cfwdall Callback<br />
softkeys connected  Hold Endcall LiveRcd Park Trnsfer Confrn</p>
<p>ephone  1<br />
privacy-button<br />
mac-address 0022.90BA.2CC0<br />
<strong>ephone-template 1</strong><br />
busy-trigger-per-button 4<br />
button  1:1 2:2</p>
<p>3. Configure the appropriate voice class to define Join/Leave tones</p>
<p>voice class custom-cptone <strong>conf-leave</strong><br />
dualtone conference<br />
frequency 300 900<br />
cadence 300 150 300 100 300 50</p>
<p>voice class custom-cptone <strong>conf-join</strong><br />
dualtone conference<br />
frequency 600 900<br />
cadence 300 150 300 100 300 50</p>
<p>4. Assign each voice class to the dspfarm profile used for conferencing</p>
<p>dspfarm profile 1 conference<br />
codec g711ulaw<br />
codec g711alaw<br />
codec g729ar8<br />
codec g729abr8<br />
codec g729r8<br />
codec g729br8<br />
maximum sessions 2<br />
<strong>conference-join custom-cptone conf-join<br />
conference-leave custom-cptone conf-leave</strong><br />
associate application SCCP</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markholloway.com/blog/?feed=rss2&amp;p=1021</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configure 802.3ad Link Aggregation for Broadworks</title>
		<link>http://www.markholloway.com/blog/?p=1009</link>
		<comments>http://www.markholloway.com/blog/?p=1009#comments</comments>
		<pubDate>Tue, 13 Jul 2010 17:04:41 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Cisco]]></category>

		<guid isPermaLink="false">http://www.markholloway.com/blog/?p=1009</guid>
		<description><![CDATA[The Broadsoft Software Management Guide provides an example for configuring active/backup Ethernet interfaces (called mode 1) when configuring bonded Ethernet on a single Red Hat Enterprise server.  Only one Ethernet interface is transmitting and receiving traffic at a time while the other interface is in standby mode.  My preferred approach is 802.3ad Link Aggregation Control [...]]]></description>
			<content:encoded><![CDATA[<p>The Broadsoft Software Management Guide provides an example for configuring active/backup Ethernet interfaces (called mode 1) when configuring bonded Ethernet on a single Red Hat Enterprise server.  Only one Ethernet interface is transmitting and receiving traffic at a time while the other interface is in standby mode.  My preferred approach is 802.3ad Link Aggregation Control Protocol (LACP). LACP creates aggregation groups that share the same  speed and duplex settings across Ethernet interfaces on a server. It utilizes all slaves in the active aggregate  according to  the 802.3ad specification.  802.3ad requires an Ethernet switch that is capable of supporting LACP.</p>
<p>## Red Hat Enterprise Linux ##</p>
<p>#vi /etc/modprobe.conf<br />
alias eth0<br />
alias eth1<br />
alias bond0 bonding<br />
options bonding miimon=50 mode=4   (note: miimon = frequency in milliseconds to monitor interfaces)</p>
<p>==AS1==<br />
#vi /etc/sysconfig/network<br />
NETWORKING=yes<br />
NETWORKING_IPV6=no<br />
HOSTNAME=as1<br />
NETWORKDELAY=25</p>
<p>#cd /etc/sysconfig/network-scripts<br />
#vi ifcfg-bond0<br />
DEVICE=bond0<br />
BOOTPROTO=static<br />
ONBOOT=yes<br />
USERCTL=no<br />
BROADCAST=192.168.126.255<br />
IPADDR=192.168.126.145<br />
NETMASK=255.255.255.0<br />
NETWORK=192.168.126.0<br />
GATEWAY=192.168.126.1</p>
<p>#vi ifcfg-eth0<br />
# Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet<br />
DEVICE=eth0<br />
BOOTPROTO=none<br />
ONBOOT=yes<br />
MASTER=bond0<br />
SLAVE=yes</p>
<p>#vi ifcfg-eth1<br />
# Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet<br />
DEVICE=eth1<br />
BOOTPROTO=none<br />
ONBOOT=yes<br />
MASTER=bond0<br />
SLAVE=yes</p>
<p>## Cisco Switch ##</p>
<p>interface Port-channel30<br />
description Port-Channel to as1<br />
switchport<br />
switchport access vlan 12<br />
switchport mode access<br />
spanning-tree portfast</p>
<p>interface GigabitEthernet3/24<br />
description [as1] IBM x3650 m2 &#8211; eth0<br />
switchport access vlan 12<br />
switchport mode access<br />
spanning-tree portfast<br />
channel-group 130 mode active</p>
<p>interface GigabitEthernet6/24<br />
description [as1] IBM x3650 m2 &#8211; eth1<br />
switchport access vlan 12<br />
switchport mode access<br />
spanning-tree portfast<br />
channel-group 130 mode active</p>
<p>The only reason I can foresee Broadsoft not providing this approach in the Software Management Guide is due to the requirement of an Ethernet switch capable of supporting LACP and the associated configuration.  Using active/standby &#8220;mode 1&#8243; bonding does not require any additional configuration beyond RHEL, so while it is more convenient and simplistic, this configuration does not fully maximize the capability of the servers.  This can be especially useful for the Media Servers, Conference Servers, or the Application Servers where Broadworks log files or Radius CDR&#8217;s are being offloaded to a separate server.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markholloway.com/blog/?feed=rss2&amp;p=1009</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cisco CUBE: Modifying a SIP Diversion Header with SIP Profiles</title>
		<link>http://www.markholloway.com/blog/?p=912</link>
		<comments>http://www.markholloway.com/blog/?p=912#comments</comments>
		<pubDate>Tue, 06 Jul 2010 04:58:24 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Cisco]]></category>
		<category><![CDATA[SIP]]></category>

		<guid isPermaLink="false">http://www.markholloway.com/blog/?p=912</guid>
		<description><![CDATA[When configuring a SIP Trunk with Unified Communications Manager to a SIP Service Provider there is a need to use a router running CUBE (Cisco Unified Border Element) between UCM and the provider offering the SIP Trunk.  One benefit is this automatically alleviates the challenges most IP PBX&#8217;s face with hosted nat traversal specific to [...]]]></description>
			<content:encoded><![CDATA[<p>When configuring a SIP Trunk with Unified Communications Manager to a SIP Service Provider there is a need to use a router running CUBE (Cisco Unified Border Element) between UCM and the provider offering the SIP Trunk.  One benefit is this automatically alleviates the challenges most IP PBX&#8217;s face with hosted nat traversal specific to SIP and RTP.  However, an even greater benefit is the power and flexibility that CUBE provides with its ability to modify SIP headers much like the larger and more costly Session Border Controllers used by SIP Service Providers.</p>
<p>In this case the modification is for SIP Diversion. By default, when UCM forwards a call to another number over the SIP Trunk it sends the internal DN as the number performing the redirect. This is a problem when forwarding calls back to the PSTN as the provider expects 10 digits instead of 4 (or whatever the internal dial plan may be).  An easy solution to this problem is using a SIP Profile with CUBE and replacing the 4 digit number with the 10 digit Pilot Number (this is same number in your <strong>sip-ua</strong> portion of the router config).</p>
<p>When CUBE is set to &#8220;<strong>allow sip to sip</strong>&#8221; it is possible to reference a SIP Profile that will modify a particular SIP message (or messages) traversing through the router. In this example it&#8217;s any SIP signaling message that contains a SIP header called <strong>Diversion</strong>.  The goal is to change <strong>9948</strong> (the 4 digit DN) to the full 10 digit phone number <strong>9494289948</strong> otherwise the SIP provider will reject a redirected call with only 4 digits in the user portion of the SIP URI in the Diversion header.</p>
<p>Below is the SIP Invite in its entirety as originated by UCM and sent towards the Cisco router running CUBE where the <span style="text-decoration: underline;">original</span> Diversion header only contains the 4 digit DN. The call flow is a PSTN call originated from 4802317040 to a number on UCM 9494289948 and the UCM number forwards back to PSTN 7023100500. Below is the forwarding part of the call-flow back to CUBE/PSTN.</p>
<p>*Oct 14 00:25:06.327: //-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:<br />
Received:<br />
INVITE sip:17023100500@192.168.1.1:5060 SIP/2.0<br />
Date: Sat, 10 Jul 2010 20:09:26 GMT<br />
Allow: INVITE, OPTIONS, INFO, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE, NOTIFY<br />
From: &#8220;HOLLOWAY MARK  &#8221; &lt;sip:4802317040@192.168.1.254&gt;;tag=9fc21ef0-b4f8-4240-a30e-86b6cfa8e8f7-27463414<br />
Allow-Events: presence<br />
P-Asserted-Identity: &#8220;HOLLOWAY MARK  &#8221; &lt;sip:4802317040@192.168.1.254&gt;<br />
Supported: timer,resource-priority,replaces<br />
Supported: Geolocation<br />
Min-SE:  1800<br />
<strong>Diversion: &#8220;9948&#8243; &lt;sip:<span style="color: #ff0000;">9948</span>@192.168.1.254&gt;;reason=unconditional;privacy=off;screen=yes</strong><br />
Remote-Party-ID: &#8220;HOLLOWAY MARK  &#8221; &lt;sip:4802317044@192.168.1.254&gt;;party=calling;screen=yes;privacy=off<br />
Content-Length: 214<br />
User-Agent: Cisco-CUCM7.1<br />
To: &lt;sip:17023100500@192.168.1.1&gt;<br />
Contact: &lt;sip:4802317040@192.168.1.254:5060&gt;<br />
Expires: 180<br />
Content-Type: application/sdp<br />
Call-ID: 8aa2480-c381d376-c6-fe01a8c0@192.168.1.254<br />
Via: SIP/2.0/UDP 192.168.1.254:5060;branch=z9hG4bK1b172bdcdc9<br />
CSeq: 101 INVITE<br />
Session-Expires:  1800<br />
Max-Forwards: 7</p>
<p>The following CUBE configuration modifies the User portion of the SIP URI to replace 9948 with 9494289948 which is our valid 10 digit number the Service Provider is expecting.</p>
<p><strong>voice service voip<br />
allow-connections sip to sip<br />
sip<br />
sip-profiles 1</strong></p>
<p><strong>voice class sip-profiles 1<br />
request INVITE sip-header Diversion modify &#8220;&lt;sip:(.*)@(.*)&gt;&#8221;   &#8220;&lt;sip:4804101040@voip.markholloway.net&#8221;</strong></p>
<p>The characters <strong> .*@.*</strong> in the first set of the expression identify all   characters in the original Diversion header coming from UCM and the second set identifies what the first set will be replaced with.</p>
<p>This is the new SIP Invite modified by CUBE in its entirety as it leaves CUBE and goes towards the SIP Service Provider.</p>
<p>*Oct 14 00:25:06.355: //-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:<br />
Sent:<br />
INVITE sip:17023100500@voip.markholloway.net:5060 SIP/2.0<br />
Via: SIP/2.0/UDP 174.26.121.21:5060;branch=z9hG4bK81718<br />
From: &#8220;HOLLOWAY MARK  &#8221; &lt;sip:4802317040@voip.markholloway.net&gt;;tag=2C06BC-1C60<br />
To: &lt;sip:17023100500@voip.markholloway.net&gt;<br />
Date: Wed, 14 Oct 2009 00:25:06 GMT<br />
Call-ID: DB7F2DFB-B78E11DE-801FA01B-F10CA800@174.26.121.21<br />
Supported: 100rel,timer,resource-priority,replaces,sdp-anat<br />
Min-SE:  1800<br />
Cisco-Guid: 3682385244-3079541214-2149163035-4044138496<br />
User-Agent: Cisco-SIPGateway/IOS-12.x<br />
Allow: INVITE, OPTIONS, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE, NOTIFY, INFO, REGISTER<br />
CSeq: 101 INVITE<br />
Timestamp: 1255479906<br />
Contact: &lt;sip:4802317040;tgrp=9494289948;trunk-context=voip.markholloway.net@174.26.121.21:5060&gt;<br />
Expires: 180<br />
Allow-Events: telephone-event<br />
Max-Forwards: 6<br />
Session-Expires:  1800<br />
<strong>Diversion: &lt;sip:<span style="color: #0000ff;">9494289948</span>@voip.markholloway.net&gt;;privacy=off;reason=unconditional;screen=yes</strong><br />
Content-Type: application/sdp<br />
Content-Disposition: session;handling=required<br />
Content-Length: 216</p>
<p>You  do not need to build the profile for multiple numbers since the router is  using the pilot user (from sip-ua) as the Diversion number.  It&#8217;s common  for Service Providers to build a trunk group in a parent-child  hierarchy so if the redirect number is the pilot number, regardless of  which DN is doing the forwarding, the call is permitted. This will not interfere with caller-id either.</p>
<p>The following are more SIP Profile examples.  These are for supporting a Trunk Group Identifier.  Some SIP Provider platforms such as Broadworks and Sonus will allow tgrp to be used for validating a legitimate call rather than using a phone number from the trunk group.  This allows the customer to send any outbound caller-id they want without the call being rejected.</p>
<p>In the following examples the customer in Broadworks would have their Trunk Group Identifier set by the Service Provider.  For simplicity, the Provider is using the main trunking number as the identifier.  It needs to be set for both SIP registrations and SIP Invites.</p>
<p>request REGISTER sip-header Contact modify &#8220;&lt;sip:(.*)@(.*)&gt;&#8221; &#8220;&lt;sip:\1;<strong>tgrp=9494289948</strong>;trunk-context=voip.markholloway.net@\2&gt;&#8221;<br />
request INVITE sip-header Contact modify &#8220;&lt;sip:(.*)@(.*)&gt;&#8221; &#8220;&lt;sip:\1;<strong>tgrp=9494289948</strong>;trunk-context=voip.markholloway.net@\2&gt;&#8221;</p>
<p>Below is another example where a call coming from UCM includes the leading 9 for outside dial tone. Rather than stripping 9 on UCM it will be stripped by CUBE using a SIP Profile.</p>
<p>response 183 sip-header Remote-Party-ID modify &#8220;(.*):9(.*)&#8221; &#8220;\1:\2&#8243;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markholloway.com/blog/?feed=rss2&amp;p=912</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Broadworks Exteme Overload Controls</title>
		<link>http://www.markholloway.com/blog/?p=804</link>
		<comments>http://www.markholloway.com/blog/?p=804#comments</comments>
		<pubDate>Tue, 27 Apr 2010 23:49:50 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[BroadWorks]]></category>
		<category><![CDATA[SIP]]></category>

		<guid isPermaLink="false">http://www.markholloway.com/blog/?p=804</guid>
		<description><![CDATA[The Broadworks platform uses an enhanced algorithm called Overload Control to offer protection when a cluster node is under severe conditions. The goal is that during an overload period of 150% the throughput will be no less than 90%. Behavior of the Application Server is dependent upon a series of configuration parameters configured through bwcli.  [...]]]></description>
			<content:encoded><![CDATA[<p>The Broadworks platform uses an enhanced algorithm called <strong>Overload Control</strong> to offer protection when a cluster node is under severe conditions. The goal is that during an overload period of 150% the throughput will be no less than 90%. Behavior of the Application Server is dependent upon a series of configuration parameters configured through bwcli.  Extreme overload control provides message throttling at the decoding and encoding queues. The maximum packet age used during overload is different from that used during non-overload. Both the maximum packet age and maximum packet age during overload are configurable via the CLI.</p>
<p>Example:</p>
<p>AS_CLI/System/OverloadControls&gt; get<br />
enabled = true<br />
mgcpOverloadAction = error<br />
<strong>sipOverloadAction</strong> = <strong>error</strong><br />
percentMemoryInUseToEnterYellow = 85<br />
percentMemoryInUseToEnterRed = 90<br />
percentMemoryInUseToLeaveYellow = 85<br />
percentMemoryInUseToLeaveRed = 85<br />
allowEmergencyCallsInOverload = true<br />
maxPacketAgeInMsecs = 3000<br />
<strong>maxPacketAgeDuringOverloadInMsecs</strong> = <strong>1500</strong></p>
<p>One of the most critical parameters to configure is the sipOverloadAction.  This determines how Broadworks will respond during a period of an Overload. The three possible options are:</p>
<ul>
<li>drop (silently discarded)</li>
<li>redirect (302 Move Temp)</li>
<li>error (503 Service Unavailable)</li>
</ul>
<p>I do not recommend using <strong>drop</strong> as this is the least graceful approach and will cause the User Agent Client to rely on its SIP expiration timer before initiating additional SIP messages.  While <strong>error</strong> should be a viable option it does not guarantee the UAC will reattempt another SIP invite upon receiving a SIP 503 Service Unavailable message.  My recommendation and current best-practice is to use <strong>redirect</strong>.  The Broadworks Application Server (AS1) will respond to the UAC with the address of the secondary Application Server (AS2) in the SIP contact header. The remaining dialog between the UAC and UAS will be carried out through AS2.</p>
<p style="text-align: center;">Example call flow for a <strong>redirect</strong> action</p>
<p style="text-align: center;"><a href="http://www.markholloway.com/blog/wp-content/uploads/2010/04/Screen-shot-2010-04-27-at-4.40.10-PM.png"><img class="aligncenter size-medium wp-image-808" title="Screen shot 2010-04-27 at 4.40.10 PM" src="http://www.markholloway.com/blog/wp-content/uploads/2010/04/Screen-shot-2010-04-27-at-4.40.10-PM-300x151.png" alt="" width="300" height="151" /></a></p>
<p><strong>NOTE: Registration Time Extension</strong></p>
<p>During overload a SIP REGISTER messages may be discarded. To reduce the chances that a user’s registration is no longer valid (and cannot receive or possibly make calls), the extension should be set based on expected overload time, which is typically at least twice the non-callp minimum time in zone.</p>
<p><strong>Emergency Calls</strong></p>
<p>If the system is configured to allow emergency calls during overload, then originations matching the call type “Emergency” in the system calling plan are allowed to progress.</p>
<p><strong>Summary</strong></p>
<p>Extreme Overload Controls are an important element for all Broadworks deployments. Setting the proper thresholds between the Yellow and Red Zones will provide the appropriate alarming and graceful call redirection while at the same time notifying an administrator when the platform is reaching its capacity for growth.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markholloway.com/blog/?feed=rss2&amp;p=804</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acme Packet SIP Header Manipulation Rules</title>
		<link>http://www.markholloway.com/blog/?p=794</link>
		<comments>http://www.markholloway.com/blog/?p=794#comments</comments>
		<pubDate>Fri, 23 Apr 2010 18:12:35 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Acme Packet]]></category>
		<category><![CDATA[BroadWorks]]></category>
		<category><![CDATA[SIP]]></category>

		<guid isPermaLink="false">http://www.markholloway.com/blog/?p=794</guid>
		<description><![CDATA[This is an example of how to modify a SIP header with an Acme Packet Session Border Controller (SBC).  An SBC is a device most commonly used by Service Providers to provide topology hiding between their SIP platform and the public Internet.  In the most simplistic terms think of it as a Cisco PIX or [...]]]></description>
			<content:encoded><![CDATA[<p>This is an example of how to modify a SIP header with an Acme Packet Session Border Controller (SBC).  An SBC is a device most commonly used by Service Providers to provide topology hiding between their SIP platform and the public Internet.  In the most simplistic terms think of it as a Cisco PIX or ASA but explicitly dedicated to Voice over IP (SIP, H.323, MGCP).</p>
<p>The topology in this scenario is an Avaya IP PBX with a SIP Trunk registered to an ITSP&#8217;s SIP platform running Broadsoft Broadworks.  The Avaya user wants to place an anonymous outbound call but the Avaya platform is sending the SIP URI as <strong>restricted@sip.domain.com</strong> rather than <strong>anonymous@sip.domain.com</strong>.   Although RFC 3261 does not forbid a User Agent Client (UAC) from using something other than anonymous, using anonymous <span style="text-decoration: underline;">is</span> recommended.  However, Avaya chose not to follow the recommendation.</p>
<p>Our Acme Packet SBC is physically located in the core of the network but provides the logical separation between all customer facing devices and the core Broadworks cluster nodes.  This means all SIP signaling must traverse through the SBC before reaching Broadworks.  This provides a huge benefit when it comes to SIP incompatibilities between various vendors.  In this case we can modify the messaging coming from the Avaya IP PBX and literally replace anything that matches a URI with restricted@ and send anonymous@ before the SBC passes the messaging to Broadworks.</p>
<p>I have provided the examples in the form of screenshots to retain the formatting of the Acme Packet configuration text placement.</p>
<p>The first step in doing this is to create the actual SIP manipulation rules in the Acme Packet SBC.<br />
<center><br />
<a href="http://www.markholloway.com/blog/wp-content/uploads/2010/04/acme-manip1.png"><img class="aligncenter size-medium wp-image-795" title="acme-manip1" src="http://www.markholloway.com/blog/wp-content/uploads/2010/04/acme-manip1-300x185.png" alt="" width="300" height="185" /></a></center></p>
<p>The second step is to assign the SIP manipulation rule to the Access realm where the Avaya&#8217;s signaling is coming in.<br />
<center><br />
<a href="http://www.markholloway.com/blog/wp-content/uploads/2010/04/acme-manip21.png"><img class="aligncenter size-medium wp-image-797" title="acme-manip2" src="http://www.markholloway.com/blog/wp-content/uploads/2010/04/acme-manip21-235x300.png" alt="" width="235" height="300" /></a></center></p>
<p>The <strong>in-manipulationid</strong> parameter is what tells the SBC to identify a match for the values assigned to anonSwitch. If there is a match, the URI is modified and successfully sent to Broadworks.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markholloway.com/blog/?feed=rss2&amp;p=794</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Broadworks incompatible with sudo 1.7</title>
		<link>http://www.markholloway.com/blog/?p=816</link>
		<comments>http://www.markholloway.com/blog/?p=816#comments</comments>
		<pubDate>Thu, 22 Apr 2010 17:01:06 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[BroadWorks]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.markholloway.com/blog/?p=816</guid>
		<description><![CDATA[As of this writing the latest version of the Unix application sudo is not compatible with Broadworks.  Version 1.6 and below will work appropriately although Broadsoft is working to fix this.  In the event 1.7 is inadvertently installed and Broadworks will not start then the sudo application must be downgraded. Broadsoft has provided an advisory [...]]]></description>
			<content:encoded><![CDATA[<p>As of this writing the latest version of the Unix application <strong>sudo</strong> is not compatible with Broadworks.  Version 1.6 and below will work appropriately although Broadsoft is working to fix this.  In the event 1.7 is inadvertently installed and Broadworks will not start then the sudo application must be downgraded.</p>
<p>Broadsoft has provided an advisory for customers running RHEL 5.  I have summarized the steps and provided steps for those running RHEL 4 (which Broadsoft did not provide information for).</p>
<p>RHEL5:</p>
<p>Execute the following: <strong>rpm –qa | grep sudo</strong></p>
<p>The output should be like the following: <strong>sudo-1.6.7p5-30.1.5</strong></p>
<p>If it shows version 1.7.2 you will need to revert to the previous supported version via: <strong>yum downgrade sudo</strong></p>
<p>RHEL 4 (uses up2date instead of yum):</p>
<p>Login to the Red Hat web site and visit the download section.  You must download a version of sudo that is part of 1.6. One you have downloaded the appropriate version you must execute the following:</p>
<p><strong>rpm &#8211;oldpackage sudo**.rpm</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.markholloway.com/blog/?feed=rss2&amp;p=816</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cisco&#8217;s hidden Gatekeeper debug command</title>
		<link>http://www.markholloway.com/blog/?p=678</link>
		<comments>http://www.markholloway.com/blog/?p=678#comments</comments>
		<pubDate>Thu, 14 Jan 2010 00:05:39 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Cisco]]></category>

		<guid isPermaLink="false">http://www.markholloway.com/blog/?p=678</guid>
		<description><![CDATA[The following undocumented command is useful for debuging H323 messages.  This command cannot be found in the help-context of IOS as noted below. router# debug gatekeeper main 10 router# debug gatekeeper ? gup Gatekeeper GUP messages load Gatekeeper load-balancing messages servers Gatekeeper Servers The great thing about this command is the simplicity in the debug [...]]]></description>
			<content:encoded><![CDATA[<p>The following undocumented command is useful for debuging H323 messages.  This command cannot be found in the help-context of IOS as noted below.</p>
<p><strong>router# debug gatekeeper main 10</strong></p>
<p><strong>router# debug gatekeeper ?<br />
gup      Gatekeeper GUP messages<br />
load     Gatekeeper load-balancing messages<br />
servers  Gatekeeper Servers</strong></p>
<p>The great thing about this command is the simplicity in the debug output.</p>
<p style="text-align: left;">Click the screenshot for a sample output.</p>
<p><a href="http://www.markholloway.com/blog/wp-content/uploads/2010/01/gk_debug.png"><img class="aligncenter size-medium wp-image-685" title="gk_debug" src="http://www.markholloway.com/blog/wp-content/uploads/2010/01/gk_debug-300x99.png" alt="" width="300" height="99" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.markholloway.com/blog/?feed=rss2&amp;p=678</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cisco CSIM (Call Simulation) &#8211; Hidden IOS Command</title>
		<link>http://www.markholloway.com/blog/?p=645</link>
		<comments>http://www.markholloway.com/blog/?p=645#comments</comments>
		<pubDate>Sat, 05 Dec 2009 19:21:49 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Cisco]]></category>

		<guid isPermaLink="false">http://www.markholloway.com/blog/?p=645</guid>
		<description><![CDATA[CSIM is an undocumented IOS command.  When configuring a router to act as a voice gateway it is possible to test outbound calls by originating calls from the router.  If the router is configured correctly then the far end number will ring and may be answered. Use the csim start dialstring hidden command to initiate [...]]]></description>
			<content:encoded><![CDATA[<p>CSIM is an undocumented IOS command.  When configuring a router to act as a voice gateway it is possible to test outbound calls by originating calls from the router.  <span>If the router is configured correctly then the far end number will ring and may be answered. Use the <strong>csim start <span style="font-weight: normal; font-style: italic;">dialstring</span></strong> hidden command to initiate simulated calls to whichever real-world E.164 number is desired. This allows you to determine whether you can properly go offhook from the router to the PSTN, send digits, and complete a call to the destination phone. You can modify the POTS dial-peer appropriately to account for long-distance access codes and other prefixed digits as necessary. In the example below, the POTS dial-peer can match on any string of digits starting with “9”, and all digits that follow the “9” are played out voice-port X/Y/Z.</span></p>
<p><span> </span></p>
<p>dial-peer voice 1 pots<br />
destination-pattern 9T<br />
port 1/0:0</p>
<p><span> </span></p>
<p>r1# <strong>csim start 918005551212</strong></p>
<p>csim: called number = 18005551212, loop count = 1 ping count = 0</p>
<p>csim err csimDisconnected recvd DISC cid(28)</p>
<p>csim: loop = 1, failed = 1   csim: call attempted = 1, setup failed = 1, tone failed = 0</p>
<p>Despite the call working in this case CSIM will always display failed=1.  There is no real explanation for this.  CSIM can also be used with PRI, CAS, and if calls are not completing it is recommended to begin analyzing the call flow using debug commands. For example <strong>debug isdn q931</strong> will show the Tx and Rx messages (including ISDN Cause Codes) between the local router and the far end TDM equipment.</p>
<p>Here are other examples of POTS dial-peers which reflect different ways to pass digits to the TDM network.</p>
<p><span>Any of these now sends the entire string “12345678” to the PBX:</span></p>
<blockquote>
<pre>!
dial-peer voice X pots
 destination-pattern 1234....
 port 1/0:0
 <strong>forward-digits all</strong>
!</pre>
</blockquote>
<p>or:</p>
<blockquote>
<pre>!
dial-peer voice X pots
 destination-pattern 1234....
 port 1/0:0
 <strong>no digit-strip</strong>
!</pre>
</blockquote>
<p>or:</p>
<blockquote>
<pre>!
dial-peer voice X pots
 destination-pattern 1234....
 port 1/0:0
 <strong>prefix 1234</strong>
!</pre>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.markholloway.com/blog/?feed=rss2&amp;p=645</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CUE Upgrade (Cisco Unity Express 7)</title>
		<link>http://www.markholloway.com/blog/?p=595</link>
		<comments>http://www.markholloway.com/blog/?p=595#comments</comments>
		<pubDate>Wed, 25 Nov 2009 22:26:57 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[SIP]]></category>

		<guid isPermaLink="false">http://www.markholloway.com/blog/?p=595</guid>
		<description><![CDATA[I acquired a used CUE module running CUE 2.1.2 and wanted to proceed upgrading the module to CUE 7.0.3.  The only way to upgrade CUE is through FTP.  Here is the procedure. First thing I needed to do was install vsftpd on my RHEL 5 Client Workstation.  If you are running CentOS or Fedora you [...]]]></description>
			<content:encoded><![CDATA[<p>I acquired a used CUE module running CUE 2.1.2 and wanted to proceed upgrading the module to CUE 7.0.3.  The only way to upgrade CUE is through FTP.  Here is the procedure.</p>
<p>First thing I needed to do was install <strong>vsftpd</strong> on my RHEL 5 Client Workstation.  If you are running CentOS or Fedora you may already have vsftpd installed or you can easily install it using YUM.  The YUM repository for RHEL5 Client Workstation does not include the option to install vsftpd through YUM but you can login to your Red Hat account on their web site and search &#8216;vsftpd&#8217; and there is an RPM you may download and install (with no dependency problems).</p>
<p><strong># rpm -ivh vsftpd-2.0.5-16.el5.x86_64.rpm</strong> to install vsftpd</p>
<p><strong># man vsftp</strong> to read the very short manual</p>
<p># <strong>chkconfig vstpd on </strong>to start vsftpd on bootup</p>
<p><strong># service vsftpd stop|start|restart</strong> to reload the service at any time</p>
<p>By default the ftp root directory is /var/ftp</p>
<p><strong># cd /etc/vsftpd</strong></p>
<p><strong># vi vsftpd.conf</strong> and allow anonymous users (not required but makes things a bit easier)</p>
<p>From Cisco&#8217;s CCO page navigate to Cisco Unity Express 7.0.3 and download <strong>cue-vm-k9.nm-aim.7.0.3.zip</strong>.  This file is for NM-CUE and AIM modules and there is a different zip file for NME-CUE.  You also must download the appropriate license files for the number of mailboxes you are using and the IVR ports if applicable.  I also had to include the specific language file <strong>cue-vm-en_US-langpack.nm-aim.7.0.3.prt1</strong> in my FTP folder or the installation would fail regardless of the language pack being present.  Extract all the zip files into the /var/ftp folder on your FTP server.</p>
<p>Log in to your CME router populated with the CUE module.  You will need to open a session through enable mode (not config mode). You should already have your service-engine and service-module parameters configured.  IP 177.3.11.1 is the default gateway on my router and 177.3.11.254 is the IP I have assigned to my CME service module.</p>
<p>interface Service-Engine1/0<br />
ip unnumbered Vlan11<br />
service-module ip address 177.3.11.254 255.255.255.0<br />
service-module ip default-gateway 177.3.11.1</p>
<p><strong>router# service-module service-engine 0/1 session</strong><br />
Trying&#8230; Open</p>
<p>cue# show software version<br />
Cisco Unity Express version 2.1.2</p>
<p>Be sure you can ping your FTP server form the CUE command prompt.</p>
<p>cue# ping 177.3.11.2<br />
PING 177.3.11.2 (177.3.11.2) 56(84) bytes of data.<br />
64 bytes from 177.3.11.2: icmp_seq=1 ttl=255 time=0.506 ms<br />
64 bytes from 177.3.11.2: icmp_seq=2 ttl=255 time=0.287 ms<br />
64 bytes from 177.3.11.2: icmp_seq=3 ttl=255 time=0.252 ms<br />
64 bytes from 177.3.11.2: icmp_seq=4 ttl=255 time=0.257 ms<br />
64 bytes from 177.3.11.2: icmp_seq=5 ttl=255 time=0.272 ms</p>
<p>&#8212; 177.3.11.2 ping statistics &#8212;<br />
5 packets transmitted, 5 received, 0% packet loss, time 2ms<br />
rtt min/avg/max/mdev = 0.252/0.314/0.506/0.098 ms, ipg/ewma 0.551/0.407 ms</p>
<p>In this particular scenario I am performing a <strong>clean</strong> install. CUE offers the option of doing an upgrade instead of a clean install but you must refer to the Cisco Unity Express 7.0 Installation and Upgrade Guide to make sure the the existing version of CUE is at the correct version.</p>
<p>cue# software install <strong>clean</strong> url ftp://177.3.11.2/cue-vm-k9.nm-aim.7.0.3.pkg username anonymous password anonymous@</p>
<p>The file <strong>cue-vm-k9.nm-aim.7.0.3.pkg</strong> is downloaded by CUE which then proceeds to download the remaining files from the CUE zip files that was extracted in to the FTP folder.  You will be prompted to choose a language and this is where you must have the specific language pack in your FTP folder (referred to as <strong>language payload</strong> by CUE).  CUE will run through a series of steps to install CUE 7.0.3 and prompt you to reload the module.</p>
<p>cue# show software version<br />
<strong>Cisco Unity Express version (7.0.3)</strong><br />
Technical Support: http://www.cisco.com/techsupport Copyright (c) 1986-2008 by Cisco Systems, Inc.</p>
<p>Components:</p>
<p>- CUE Voicemail Language Support version <strong> 7.0.3</strong></p>
<p>The license files must now be loaded. Be sure you downloaded the correct ones as one is for CCM and the other CME.  Once you install one license type you cannot change the system to a different license unless you perform a clean install.</p>
<p>cue# software install clean url ftp://177.3.11.2/cue-vm-license_12mbx_<strong>cme</strong>_7.0.3.pkg username anonymous password anonymous@</p>
<p>cue# software install clean url ftp://177.3.11.2/cue-vm-license_4port_ivr_7.0.3.pkg username anonymous password anonymous@</p>
<p>cue# reload</p>
<p>cue# show software licenses<br />
Installed license files:<br />
- voicemail_lic.sig : 50 MAILBOX LICENSE<br />
- ivr_lic.sig : 4 PORT IVR BASE LICENSE</p>
<p>Core:<br />
- Application mode: CCME<br />
- Total usable system ports: 8</p>
<p>Voicemail/Auto Attendant:<br />
- Max system mailbox capacity time: 6000<br />
- Default # of general delivery mailboxes: 15<br />
- Default # of personal mailboxes: 50</p>
<p>- Max # of configurable mailboxes: 65</p>
<p>Interactive Voice Response:<br />
- Max # of IVR sessions: 4</p>
<p>Languages:<br />
- Max installed languages: 5<br />
- Max enabled languages: 5</p>
<p>As I go through my CCIE Voice tasks I frequently need to wipe the CUE configuration and start with a fresh CUE 7 initialization:</p>
<p>cue# <strong>offline</strong><br />
cue# <strong>restore factory default</strong></p>
<p>To wipe the config and reboot into a fresh system prompt with the initialization questions do the following:</p>
<p>cue# erase startup-config</p>
<p>The first time you log into the web interface of CUE you will need to associate the administrator credentials of the router with CUE so CUE may access CME.</p>
<p>r3-br2(config-telephony)#web admin system name admin password cisco</p>
<p>r3-br2(config)#ip http path flash:/gui</p>
<p>If you forget the last statement containing <strong>ip http path flash:/gui</strong> then CUE will fail to validate the admin/cisco credentials when entered in the CUE web interface.  CUE requires administrator access to CME.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markholloway.com/blog/?feed=rss2&amp;p=595</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
