<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>In the VoIP net world...</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/rita_z/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/rita_z/feed.xml</link>
    <description>Hello, my name is Rita. I’m not really the “blogging” type but in this case I’m making an exception. I’m currently in the Speech Server group but making a transition to another group and probably some of my current VoIP and telephony knowledge used quite</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:42:59 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Configuring and debugging DTMF (RFC 2833)</title>
      <link>https://docs.microsoft.com/archive/blogs/rita_z/configuring-and-debugging-dtmf-rfc-2833</link>
      <pubDate>Mon, 10 Oct 2005 14:57:00 GMT</pubDate>
      <dc:creator><![CDATA[Rita Z]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/rita_z/2005/10/10/configuring-and-debugging-dtmf-rfc-2833/</guid>
      <description><![CDATA[Media in SIP and H.323 is transferred over RTP. It's&nbsp;a protocol that is quite asymmetric with...]]></description>
      <content:encoded><![CDATA[<P><FONT face=Verdana color=#000000>Media in SIP and H.323 is transferred over RTP. It's&nbsp;a protocol that is quite asymmetric with respect to the sender’s and receiver’s responsibilities. Everything that sender does is splits the audio stream into packets, puts a&nbsp;header on top and sends them in a timely manner. Receiver has to deal with the fact that packets may not arrive in timely manner, may arrive in wrong order or may not arrive at all.</FONT></P>
<P><FONT face=Verdana color=#000000>DTMF tones, when transferred over RTP, will have the same issues. Different vendors try to overcome these issues by reading and implementing DTMF tone processors differently. </FONT></P>
<P><FONT face=Verdana color=#000000><STRONG><EM>How&nbsp;Cisco sends DTMF tones...</EM></STRONG></FONT></P>
<P><FONT face=Verdana color=#000000>Upon DTMF detection, Cisco GW starts sending tone updates immediately. It sends the initial packet 3 times, the initial tone duration is set to 0. Then it keeps sending updates every 50 ms until the end of the tone. Once the end of the tone is detected, Cisco GW sends the final packet 3 times with the correct “final” duration.</FONT></P>
<P><FONT face=Verdana color=#000000><STRONG><EM>How&nbsp;Intel PIMG sends DTMF tones...</EM></STRONG></FONT></P>
<P><FONT face=Verdana color=#000000>PIMG sends initial packet once but it starts the duration count from the next update. It sends updates every 20 ms, and the initial duration is set to 20. The next update will have duration 40 (even though the real duration at that time is somewhere between 20 and 40 ms). Once the tone is ended, the PIMG gateway sends 3 final packets with the "final" tone duration that is less (or equal) the duration that was reported in the previous update. (Very tricky: if you want to interop, you'll have to expect tone updates with greater sequence numbers but smaller duration).</FONT></P>
<P><FONT face=Verdana color=#000000>I wonder, is it actually possible to implement this more different and still stay within the spec compliance...?</FONT></P>
<P>&nbsp;</P>
<P><FONT face=Verdana color=#000000><STRONG><EM>How to configure...</EM></STRONG></FONT></P>
<P><FONT face=Verdana color=#000000>In the VoIP dial-peers set:</FONT></P>
<P><FONT face=Verdana color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT face="Courier New" color=#000080>dtmf-relay rtp-nte</FONT></FONT></P>
<P><FONT face=Verdana color=#000000>This will use payload type 101 for the DTMF tones. If you want to redefine it, use “<STRONG>rtp payload-type</STRONG>” command in the dial-peer that requires this change.</FONT></P>
<P><FONT face=Verdana color=#000000>There is a doc on the Cisco web site that covers these commands in details: “Dual Tone Multifrequency Relay for SIP calls Using Named Telephone Events” (</FONT><A href="http://www.cisco.com/en/US/products/sw/iosswrel/ps1839/products_feature_guide09186a0080087edb.html#58571"><FONT face=Verdana color=#000000>http://www.cisco.com/en/US/products/sw/iosswrel/ps1839/products_feature_guide09186a0080087edb.html#58571</FONT></A><FONT face=Verdana color=#000000>)</FONT></P>
<P><FONT face=Verdana color=#000000><EM>I remember an issue when we were advertizing&nbsp;PT 96 in the outboung calls and Cisco GW was ignoring it and sending 200 OK with no support for DTMF. When turned on the "deb voip ivr all" and "deb voip ccapi inout", one of these debug outputs had messages about some application being bound to the payload type 96, and due to the conflict, it dropped the DTMF support for that call. Well, not arguing about validity of this (96..127 is the dynamic range after all), just redefine the map of these tones on the gateway, or use 101.</EM></FONT></P>
<P>&nbsp;</P>
<P><FONT face=Verdana color=#000000><STRONG><EM>How to debug...</EM></STRONG></FONT></P>
<P><FONT face=Verdana color=#000000>When DTMF tones seemed to be lost (completely not received) by one or another side, <EM>it’s very (very!) unlikely</EM> that the packet loss is the reason for this. Start from looking at the media negotiation. All or some messages of the call setup (Invite/Trying/Ringing/Ok/Ack) will have SDP block that should have something similar to this:</FONT></P>
<P><FONT face=Verdana color=#000000><FONT face="Courier New" color=#000080>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m=audio 46090 RTP/AVP 0 8 101<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a=rtpmap:101 telephone-event/8000<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a=fmtp:101 0-16</FONT></FONT></P>
<P><FONT face=Verdana color=#000000>SDP doesn’t really “negotiate” media parameters, but if you see INVITE that has “<STRONG>a=</STRONG>” with telephone-event, and 200 OK doesn’t have it, you’re likely to end up with the session that won’t use RFC 2833 for DTMF tones. </FONT></P>
<P><FONT face=Verdana color=#000000>Does it mean that the DTMF tones are not transferred? It depends. In case with Cisco GWs, they will not extract DTMF tones from the audio, so the tones will come as a wave form. On the other end, if it’s a pure IP endpoint, it&nbsp; likely won’t have tone waveform generator, and the tones won’t be sent at all.</FONT></P>
<P><FONT face=Verdana color=#000000>If you want to see whether Cisco GW sends and receives tones (including all tome updates) use “<STRONG>deb voip rtp</STRONG>”. Here is an example of debug output:</FONT></P>
<P><FONT face="Courier New" color=#000080>Nov 10 07:49:29.061:&nbsp; &lt;&lt;&lt;Rcv&gt; Pt:101&nbsp;&nbsp;&nbsp; Evt:5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pkt:0D 00 00<BR>Nov 10 07:49:29.061:&nbsp; &lt;&lt;&lt;Rcv&gt; Pt:101&nbsp;&nbsp;&nbsp; Evt:5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pkt:0D 00 00<BR>Nov 10 07:49:29.065:&nbsp; &lt;&lt;&lt;Rcv&gt; Pt:101&nbsp;&nbsp;&nbsp; Evt:5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pkt:0D 00 00<BR>Nov 10 07:49:29.113:&nbsp; &lt;&lt;&lt;Rcv&gt; Pt:101&nbsp;&nbsp;&nbsp; Evt:5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pkt:0D 01 90<BR>Nov 10 07:49:29.165:&nbsp; &lt;&lt;&lt;Rcv&gt; Pt:101&nbsp;&nbsp;&nbsp; Evt:5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pkt:0D 03 20<BR>Nov 10 07:49:29.173:&nbsp; &lt;&lt;&lt;Rcv&gt; Pt:101&nbsp;&nbsp;&nbsp; Evt:5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pkt:8D 03 88<BR>Nov 10 07:49:29.181:&nbsp; &lt;&lt;&lt;Rcv&gt; Pt:101&nbsp;&nbsp;&nbsp; Evt:5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pkt:8D 03 88<BR>Nov 10 07:49:29.185:&nbsp; &lt;&lt;&lt;Rcv&gt; Pt:101&nbsp;&nbsp;&nbsp; Evt:5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pkt:8D 03 88</FONT></P>
<P><FONT face=Verdana color=#000000>How to read it: The “5” key was pressed for 113 ms (0x388 / 8). The first three packets are the tone start (3 times resend). The last three packets have the “End” bit on (Pkt:<STRONG>8</STRONG>D...) and they were also three times resent. The timestamp on each line of the logs help to see how the tone updates were sent.<BR></P></FONT>
<P><FONT face=Verdana color=#000000>&nbsp;</P></FONT>]]></content:encoded>
    </item>
    <item>
      <title>Bringing gateway from the dead...</title>
      <link>https://docs.microsoft.com/archive/blogs/rita_z/bringing-gateway-from-the-dead</link>
      <pubDate>Wed, 05 Oct 2005 19:03:00 GMT</pubDate>
      <dc:creator><![CDATA[Rita Z]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/rita_z/2005/10/05/bringing-gateway-from-the-dead/</guid>
      <description><![CDATA[At some point I was planning to explain how to bring “dead” Cisco gateway (or router, at that stage...]]></description>
      <content:encoded><![CDATA[<P><FONT face=Verdana>At some point I was planning to explain how to bring “dead” Cisco gateway (or router, at that stage there is no difference in functionality) back to life and one of our AS5400 conveniently just “died” in the lab. How do I know that it’s “dead”? Well, a telnet session froze in the middle, since then I cannot ping this gateway anymore.</FONT></P>
<P><FONT face=Verdana>If this happens and you already tried to access to your gateway through every interface configured, then the only choice left is using the console. Connect the Console port on your gateway with the COM port on the PC, open Hyperterminal, use the default settings for speed, parity and so on, once finished, press enter and check the prompt that the gateway is replying with. If you see something like this:</FONT></P>
<P><FONT face="Courier New" color=#000080>rommon 1 &gt;</FONT></P>
<P><FONT face=Verdana>then your gateway failed to load and is currently in the ROMMON. If you’re curious what cause your gateway to get into this mode, use “<STRONG>sysret</STRONG>” command.</FONT></P>
<P><FONT face=Verdana>The main goal at this stage is to find the right IOS image and boot it. Check the devices available:</FONT></P>
<P><FONT face="Courier New" color=#000080>rommon 2 &gt; dev<BR>Devices in device table:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id&nbsp; name<BR>&nbsp;&nbsp;&nbsp; flash:&nbsp; flash<BR>bootflash:&nbsp; boot flash</FONT></P>
<P><FONT face=Verdana>Check if flash: has any images already stored:<BR></FONT><FONT face="Courier New" color=#000080>rommon 3 &gt; dir flash:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Checksum&nbsp;&nbsp; File name<BR>&nbsp; 14423092 bytes (0xdc1434)&nbsp;&nbsp; 0x64cb5d98&nbsp;&nbsp;&nbsp; c5400-is-mz.123-2.T5.bin<BR>&nbsp;&nbsp;&nbsp;&nbsp; 13769 bytes (0x35c9)&nbsp;&nbsp;&nbsp;&nbsp; 0x229ec3b1&nbsp;&nbsp;&nbsp; tippi5400-confg<BR>&nbsp;&nbsp;&nbsp;&nbsp; 58095 bytes (0xe2ef)&nbsp;&nbsp;&nbsp;&nbsp; 0x8f9c2d6d&nbsp;&nbsp;&nbsp; crashinfo_20000101-002059</FONT></P>
<P><FONT face=Verdana>This gateway already has 5400-is-mz.123-2.T5.bin, so we just boot it:<BR></FONT><FONT face="Courier New" color=#000080>rommon 4 &gt; boot flash: c5400-is-mz.123-2.T5.bin</FONT></P>
<P><FONT face=Verdana>If the image is correct and finished the booting successfully, you’ll get a regular prompt:<BR></FONT><FONT face="Courier New" color=#000080>tippi5400&gt;</FONT></P>
<P><FONT face=Verdana>Normally, in case of an internal failure or a power outage, the router/gateway should reboot and start automatically loading the saved startup configuration. Some basic post-mortem diagnostics of why router went down can be done by looking at the “<STRONG>sysret</STRONG>” output in the ROMMON or checking the output from “<STRONG>sh ver</STRONG>” once loaded (if you’re running one of the latest versions and it keeps crashing in similar conditions, you probably want to let Cisco TAC know about it, including sending them the crash dumps). The next step is to fix the boot procedure so the router could come up automatically.</FONT></P>
<P><FONT face=Verdana>The most likely reason for this problem is that the router/gateway couldn’t find the IOS image to boot. In the router’s config you can specify image(s) to load. In my case they were pointing to the wrong files in the flash: and caused the boot procedure to fail. Remove the obsolete/incorrect references with “<STRONG>no boot system flash &lt;name&gt;</STRONG>” and add the correct one with “<STRONG>boot system flash &lt;name&gt;</STRONG>”:<BR></FONT><FONT face="Courier New" color=#000080>boot system flash c5400-is-mz.123-2.T5.bin</FONT></P>
<P><FONT face=Verdana>Verify that your changes work. Save the configuration and reboot, this will help avoiding surprises when your gateway dies next time.</FONT></P>
<P><FONT face=Verdana>So, I enter “<STRONG>wr</STRONG>” then “<STRONG>reload</STRONG>” and... this gateway doesn’t boot again. :-( Moreover, it doesn’t look like it was actually trying to boot from anywhere at all. So, I manually specified where to boot from, loaded again and checked if anybody messed up with the register. Somebody definitely did:</FONT></P>
<P><FONT face="Courier New" color=#000080>tippi5400#sh ver<BR>Cisco Internetwork Operating System Software<BR>IOS (tm) 5400 Software (C5400-IS-M), Version 12.3(2)T5,&nbsp; RELEASE SOFTWARE (fc2)<BR>&lt;skipped&gt;<BR>Configuration register is 0x0</FONT></P>
<P><FONT face=Verdana>Well, it doesn’t load because it was specifically set not to. Fixed that by setting register to default with "<STRONG>config-register 0x2102</STRONG>". Again, saved and reloaded, and everything worked fine.</FONT></P>
<P><FONT face=Verdana>A couple of hints for getting rid of annoying messages:<BR><STRONG><EM>“%Error opening tftp://255.255.255.255/tippi540.cfg (Timed out)”</EM></STRONG> messages…<BR>Enter “<STRONG>no service config</STRONG>” in the global config and these messages are gone.</FONT></P>
<P><FONT face=Verdana><STRONG>“Translating "&lt;something&gt;"...domain server”</STRONG> when typing wrong command…<BR>Enter “<STRONG>no ip domain-lookup</STRONG>” in the global config.</FONT></P>
<P><FONT face=Verdana>Finally, the gateway is up, so check that “<STRONG>no logging console</STRONG>” is set and forget about console terminal until next time you cannot telnet to your gateway.</FONT></P>
<P><FONT face=Verdana>There is a certain pain associated with downloading the IOS image from ROMMON via TFTP. In the lab gateway we laready had IOS image in the flash, so it was just the task of booting from it. Sometimes (especially after experiments with commands that erase the flash) your gateway may fail to boot because the flash is empty. Then you'll have to use ROMMON fro downloading IOS image as well. Use “<STRONG>set</STRONG>” command to specify <STRONG>IP_ADDRESS</STRONG>, <STRONG>IP_SUBNET_MASK</STRONG>, <STRONG>DEFAULT_GATEWAY</STRONG>, <STRONG>TFTP_SERVER</STRONG>, and <STRONG>TFTP_FILE</STRONG>, then enter “<STRONG>tftpdnld</STRONG>” which will download the image and place it into the flash (unless <STRONG>-r</STRONG> is specified). "<STRONG>reset</STRONG>" will cause gateway to reboot from ROMMON and verify if it can load successfully.</FONT></P>
<P><FONT face=Verdana></FONT>&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Call transfer on Cisco VoIP gateway</title>
      <link>https://docs.microsoft.com/archive/blogs/rita_z/call-transfer-on-cisco-voip-gateway</link>
      <pubDate>Fri, 30 Sep 2005 20:08:00 GMT</pubDate>
      <dc:creator><![CDATA[Rita Z]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/rita_z/2005/09/30/call-transfer-on-cisco-voip-gateway/</guid>
      <description><![CDATA[First, the only call xfer type available for us (at least at this moment) is tromboning...]]></description>
      <content:encoded><![CDATA[<P><FONT face=Verdana>First, the only call xfer type available for us (at least at this moment) is tromboning ("hair-pin"). It has quite obvious pros and cons: it works no matter what kind of telephony protocol you're using&nbsp;(interoperable as long as your gateway can perform outbound calls) but the gateway stays in the call for the duration of the transferred call when both call legs belong to PSTN (resulting into two channels allocated, which is quite expensive).</FONT></P>
<P><FONT face=Verdana></FONT>&nbsp;</P>
<P><FONT face=Verdana><STRONG>Do I need anything special configured for the call transfer?</STRONG></FONT></P><FONT face=Verdana><STRONG>
<P dir=ltr style="MARGIN-RIGHT: 0px"><BR></STRONG>Yes. By default the call xfer won’t work. You’ll have to configure a different application the inbound dial-peer for calls that are expected&nbsp;to use transfer later:</P>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<P dir=ltr style="MARGIN-RIGHT: 0px"><FONT face="Courier New" color=#000080>dial-peer voice 200 pots<BR>&nbsp;application session<BR>&nbsp;incoming called-number .<BR>&nbsp;direct-inward-dial<BR></FONT></P></BLOCKQUOTE>
<UL dir=ltr>
<LI>
<DIV style="MARGIN-RIGHT: 0px">“<STRONG>application session</STRONG>” tells the gateway to use and application that “knows” how to transfer a call. By default, the “DEFAULT” application is used.</DIV>
<LI>
<DIV style="MARGIN-RIGHT: 0px">“<STRONG>incoming called-number .</STRONG>” allows this dial-peer to be used as inbound dial-peer for any DNIS.</DIV>
<LI>
<DIV style="MARGIN-RIGHT: 0px">“<STRONG>direct-inward-dial</STRONG>” allows you to avoid “assistance” from the gateway w.r.t. collecting additional information from the called like phone extension. Read “<A href="http://cisco.com/en/US/tech/tk652/tk653/technologies_tech_note09186a00801142f8.shtml">Understanding Direct-Inward-Dial (DID) on IOS Voice Digital (T1/E1) Interfaces</A>”&nbsp;</FONT><FONT face=Verdana>if you want to understand DID more.<BR></DIV></LI></UL></FONT><FONT face=Verdana></FONT>
<P dir=ltr style="MARGIN-RIGHT: 0px"><FONT face=Verdana>Now all calls coming from the PSTN through this dial-peer&nbsp;will be processed by the “session” application and will be able to perform call xfer later.</FONT></P>
<P><FONT face=Verdana>Note: It seems that Cisco has added new command that helps to avoid configuring this “application session” for each inbound dial-peer: “call application global session”. I didn't try it yet.</FONT></P>
<P>&nbsp;</P>
<P><FONT face=Verdana><STRONG>Call transfer still doesn’t work. Why?</STRONG></FONT></P><FONT face=Verdana><STRONG>
<P><BR></STRONG>Many reasons but I’d start from verifying whether the application for the original call is configured correctly. Turn on “<STRONG>deb voip ccapi inout</STRONG>” (it’s a very chatty debug command, be sure that you don’t run calls through this gateway while you’re playing with it). Look through the output. If you see this:</P>
<P><FONT face="Courier New" color=#000080>*May 19 04:24:53.602: //13141/BACA45859589/CCAPI/cc_process_call_setup_ind:<BR>&nbsp;&nbsp; &gt;&gt;&gt;&gt;CCAPI handed cid 13141 with tag 100 to app "<STRONG>DEFAULT</STRONG>"</FONT></P>
<P>then you didn’t configure your gateway correctly. This call still goes through the dial-peer (in this case, it’s a dial-peer 100) that doesn’t have “application session” configured.</P>
<P>If you see application "session” there, then you’ll have to look at the time when the call transfer is initiated. Turn on “<STRONG>deb voip ccapi inout</STRONG>” and “<STRONG>deb ccsip messages</STRONG>” and see what happens when REFER arrives.</P>
<P></FONT>&nbsp;</P>
<P><FONT face=Verdana><STRONG>7-, 10-digit numbers and a prefix “9”…</STRONG></FONT></P>
<P><FONT face=Verdana>Some time ago I ran into this issue with the outbound calls (and transfer as well). What appeared to be a misunderstanding between Cisco GW and PBX SL-100 (which our GW is connected to)&nbsp;with respect to the TON (TypeOfNumber) field for the Called Party Number, produced quite amazing ISDN Q.931 message exchange:</FONT></P>
<P><FONT face="Courier New" color=#000080>*Jun&nbsp; 6 01:04:04.735: ISDN Se3/0:23 Q931: TX -&gt; SETUP pd = 8&nbsp; callref = 0x0421<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Bearer Capability i = 0x8090A2<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Standard = CCITT<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transer Capability = Speech<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transfer Mode = Circuit<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transfer Rate = 64 kbit/s<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Channel ID i = 0xA98397<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exclusive, Channel 23<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Calling Party Number i = 0x2180, '4255554592'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Plan:ISDN, Type:National<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>Called Party Number i = 0xC1, '95557310'</STRONG><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Plan:ISDN, Type:Subscriber(local)<BR>*Jun&nbsp; 6 01:04:04.831: ISDN Se3/0:23 Q931: RX &lt;- STATUS pd = 8&nbsp; callref = 0x8421<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cause i = 0x808B - <STRONG>Excessive digits received, call is proceeding</STRONG><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Call State i = 0x01<BR>*Jun&nbsp; 6 01:04:04.835: ISDN Se3/0:23 Q931: TX -&gt; STATUS pd = 8&nbsp; callref = 0x0421<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cause i = 0x80E4 - Invalid information element contents<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Call State i = 0x01<BR>*Jun&nbsp; 6 01:04:04.839: ISDN Se3/0:23 Q931: RX &lt;- CALL_PROC pd = 8&nbsp; callref = 0x8421<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Channel ID i = 0xA98397<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exclusive, Channel 23<BR>*Jun&nbsp; 6 01:04:04.843: ISDN Se3/0:23 Q931: RX &lt;- DISCONNECT pd = 8&nbsp; callref = 0x8421<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cause i = 0x809C - <STRONG>Invalid number format (incomplete number)</STRONG><BR>*Jun&nbsp; 6 01:04:04.843: ISDN Se3/0:23 Q931: TX -&gt; RELEASE pd = 8&nbsp; callref = 0x0421<BR>*Jun&nbsp; 6 01:04:04.879: ISDN Se3/0:23 Q931: RX &lt;- RELEASE_COMP pd = 8&nbsp; callref = 0x8421</FONT></P>
<P><FONT face=Verdana>So, in the Q.931 SETUP we provide 7-digit number with “9” prefix. The PBX didn’t really like the 8-digit number, complaining “Excessive digits received” in the Q.931 STATUS. </FONT></P>
<P><FONT face=Verdana>(Interestingly enough, Cisco GW didn’t like this STATUS message either, complaining back with “Invalid information element contents”. This status exchange is harmless – both sides just keep complaining :-).</FONT></P>
<P><FONT face=Verdana>I guess, PBX didn’t only complain about extra digits, it also cut them off. The DISCONNECT cause code says “incomplete number”.</FONT></P>
<P><FONT face=Verdana>There are two solutions to this:</FONT></P>
<OL>
<LI><FONT face=Verdana>Move switch type configured both on the Cisco GW and PBX to DMS-100. (I actually didn’t try this, only heard that as a recommendation).</FONT> 
<LI><FONT face=Verdana>Configure the Cisco GW to change TON to “Unknown”. Quite simple translation rule would help:<BR>(In the global config)<BR><FONT face="Courier New" color=#000080>&nbsp;&nbsp;&nbsp;&nbsp; translation-rule 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rule 1 ^9 9 ANY unknown<BR></FONT>(In the outbound dial-peer)<BR><FONT face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT color=#000080>translate-outgoing called 1</FONT><BR></FONT></LI></OL></FONT>]]></content:encoded>
    </item>
    <item>
      <title>Getting telephony side up and running...</title>
      <link>https://docs.microsoft.com/archive/blogs/rita_z/getting-telephony-side-up-and-running</link>
      <pubDate>Wed, 21 Sep 2005 02:20:00 GMT</pubDate>
      <dc:creator><![CDATA[Rita Z]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/rita_z/2005/09/21/getting-telephony-side-up-and-running/</guid>
      <description><![CDATA[Telephony... Where to start?
Well, it you already got your gateway, you already have to know what...]]></description>
      <content:encoded><![CDATA[<P><FONT face=Verdana><STRONG><EM>Telephony... Where to start?</EM></STRONG></FONT></P>
<P><FONT face=Verdana>Well, it you already got your gateway, you already have to know what kind of telephony link you’ll be working with because the hardware modules are different for analog and digital lines. If you have T1 (or E1) lines coming in, you have two choices for getting voice calls in and out: ISDN PRI and CAS (or Robbed bit signaling).</FONT></P>
<P><FONT face=Verdana>ISDN is expensive (takes 1 out of 24 channels in T1 for control messages and barely uses it, unless you configure NFAS) and complicated (w.r.t. the implementation) but it’s very simple to bring ISDN trunks up on the Cisco gateway. It's also easier to figure out what's going on in case of a failure.</FONT></P>
<P><FONT face=Verdana>CAS is cheaper since you get all 24 channels, but even getting the DNIS/ANI information becomes real pain. Another thing to watch out with CAS: those robbed bits are not exactly robbed, they are still in the stream and still have valid signaling information. For some types of signaling the flat silence won’t be "flat" anymore. If your receiving device has some adjusting mechanism for noise reduction, it may detect these periodic signaled bits and adjust accordingly (which may have greater impact on transferred voice than expected).</FONT></P>
<P><FONT face=Verdana>My personal experience with CAS: it never works the first time I plug it in. I find it much easier to deal with ISDN in the labs: can clearly see when call arrives, how it is handled and the tear down. </FONT></P>
<P><FONT face=Verdana></FONT>&nbsp;</P>
<P><FONT face=Verdana><STRONG><EM>What should I know from my telephony provider about T1 lines?</EM></STRONG></FONT></P>
<P><FONT face=Verdana>Two things: framing and line coding. By default, Cisco has SF (SuperFrame) and AMI (Alternate Mark Inversion) for the T1 controller. However, almost every time the T1 lines we are getting from CO have ESF (Extended SuperFrame) and B8ZS (Bipolar with eight-Zero Substitution).<BR>BTW, found quite interesting Q&amp;A on this frame/line-code stuff, if somebody wants to understand that deeper: “<A href="http://tcpmag.com/qanda/article.asp?EditorialsID=276">Why B8ZS Isn't The Way To Go in Convergence</A>”.</FONT></P>
<P><FONT face=Verdana></FONT>&nbsp;</P>
<P><FONT face=Verdana><STRONG><EM>What happens if I make a mistake setting up framing or line-coding?</EM></STRONG></FONT></P>
<P><FONT face=Verdana>Well, for framing it’s simple:&nbsp;nothing will work if you try to use one type of framing instead of another. For line-coding it’s a little worse, because you may see line working but with errors. Once you configured the T1 controller, it makes sense to check if there are any errors on the line (use “<STRONG>sh contr t1</STRONG>” command).</FONT></P>
<P><FONT face=Verdana></FONT>&nbsp;</P>
<P><FONT face=Verdana><STRONG><EM>What should I know from my telephony provider about ISDN line?</EM></STRONG></FONT></P>
<P><FONT face=Verdana>First, the type of ISDN switch. Cisco gateway has a variety of supported implementations:</FONT></P>
<P><FONT face="Courier New" color=#000080>sdn5350u(config)#isdn switch-type ?<BR>&nbsp; primary-4ess&nbsp;&nbsp;&nbsp; Lucent 4ESS switch type for the U.S.<BR>&nbsp; primary-5ess&nbsp;&nbsp;&nbsp; Lucent 5ESS switch type for the U.S.<BR>&nbsp; primary-dms100&nbsp; Northern Telecom DMS-100 switch type for the U.S.<BR>&nbsp; primary-dpnss&nbsp;&nbsp; DPNSS switch type for Europe<BR>&nbsp; primary-net5&nbsp;&nbsp;&nbsp; NET5 switch type for UK, Europe, Asia and Australia<BR>&nbsp; primary-ni&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; National ISDN Switch type for the U.S.<BR>&nbsp; primary-ntt&nbsp;&nbsp;&nbsp;&nbsp; NTT switch type for Japan<BR>&nbsp; primary-qsig&nbsp;&nbsp;&nbsp; QSIG switch type<BR>&nbsp; primary-ts014&nbsp;&nbsp; TS014 switch type for Australia (obsolete)</FONT></P>
<P><FONT face=Verdana>Usually the “NI” (National ISDN) is used, which I believe is supported by all switch vendors now. But this is definitely what you have to know from your provider.</FONT></P>
<P><FONT face=Verdana></FONT>&nbsp;</P>
<P><FONT face=Verdana><STRONG><EM>What “B” and “D” channels mean?</EM></STRONG></FONT></P>
<P><FONT face=Verdana>It’s an ISDN terminology for marking the logical channels depending on the type of information they carry. A usual T1 ISDN PRI line will carry 24 channels 64 kbps each. 23 of them are “B” (Bearer) channels that carry voice/speech/data for a call, and 1 “D” (Data) channel carries control information about these calls (as well as some status information about these channels).</FONT></P>
<P><FONT face=Verdana>It's a little more complicated with european E1 PRI which has 30 "B" channels, 1 "D" channel and 1 synchronization channel (that's quite often not mentioned, but it still has a single timeslot allocated).</FONT></P>
<P><FONT face=Verdana>There is some confusion in the Cisco config related to the names and numbers of the D channel. When configuring the T1 controlled, you will have to specify a PRI group (that tells the gateway which timeslots to use):</FONT></P>
<P><FONT face=Verdana><FONT face="Courier New" color=#000080>controller T1 3/0<BR>&nbsp;framing esf<BR>&nbsp;linecode b8zs<BR>&nbsp;pri-group timeslots 1-24</FONT></FONT></P>
<P><FONT face=Verdana>This division into&nbsp;B and D channels happens in the above layer. Doen here, in the controller, these channels are identical timeslots.&nbsp;You can specify less number of channels (timeslots) to use (tricky, because the other side should be configured correspondingly as well), but you always will have the timeslot 24 (corresponding to D channel) configured. Even if you forgot and specified “1-3”, the gateway will do it for you automatically: “1-3,24”.</FONT></P>
<P><FONT face=Verdana>The next layer where you’ll refer to the D channel is a serial interface. Watch out, channels here are counted starting from 0, so the corresponding interface description will be “<STRONG>interface Serial3/0:23</STRONG>”.</FONT></P>
<P><FONT face=Verdana>Dealing with voice calls, the next abstraction layer in the config is voice ports. It still applies to the same D channel, but now it’s being referred this way: “<STRONG>voice-port 3/0:D</STRONG>”.<BR>(I’m sure there must be a reason for this mess,&nbsp;but I think this is a natural way of regulating number of people that pass CCIE exams :-)</FONT></P>
<P>&nbsp;</P>
<P><FONT face=Verdana><STRONG><EM>How to check if telephony side is up?</EM></STRONG></FONT></P>
<P><FONT face=Verdana>Well, run the following command: “<STRONG>sh isdn stat</STRONG>”. What you want to see is similar to this:</FONT></P>
<P><FONT face="Courier New" color=#000080>ISDN Serial3/0:23 interface<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dsl 0, interface ISDN Switchtype = primary-5ess<BR>&nbsp;&nbsp;&nbsp; Layer 1 Status:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>ACTIVE</STRONG><BR>&nbsp;&nbsp;&nbsp; Layer 2 Status:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TEI = 0, Ces = 1, SAPI = 0, State = <STRONG>MULTIPLE_FRAME_ESTABLISHED</STRONG><BR>&nbsp;&nbsp;&nbsp; Layer 3 Status:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 Active Layer 3 Call(s)<BR>&nbsp;&nbsp;&nbsp; Active dsl 0 CCBs = 0<BR>&nbsp;&nbsp;&nbsp; The Free Channel Mask:&nbsp; 0x807FFFFF<BR>&nbsp;&nbsp;&nbsp; Number of L2 Discards = 0, L2 Session ID = 24</FONT></P>
<P><FONT face=Verdana>If MULTIPLE_FRAME_ESTABLISHED appears in the L2 state, everything is fine and now you can make calls and see them coming (unless the configuration of your PBX or CO is wrong and those calls are simply not routed via this T1 trunk).</FONT></P>
<P><FONT face=Verdana>If you see something like this:</FONT></P>
<P><FONT face="Courier New" color=#000080>ISDN Serial3/2:23 interface<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dsl 2, interface ISDN Switchtype = primary-5ess<BR>&nbsp;&nbsp;&nbsp; Layer 1 Status:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>DEACTIVATED</STRONG><BR>&nbsp;&nbsp;&nbsp; Layer 2 Status:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TEI = 0, Ces = 1, SAPI = 0, State = <STRONG>TEI_ASSIGNED</STRONG><BR>&nbsp;&nbsp;&nbsp; Layer 3 Status:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 Active Layer 3 Call(s)<BR>&nbsp;&nbsp;&nbsp; Active dsl 2 CCBs = 0<BR>&nbsp;&nbsp;&nbsp; The Free Channel Mask:&nbsp; 0x00000000<BR>&nbsp;&nbsp;&nbsp; Number of L2 Discards = 0, L2 Session ID = 0</FONT></P>
<P><FONT face=Verdana>then you are likely to have a problem with the physical connection. Though the same result will be if you administratively shutdown this controller (using "<STRONG>shutdown</STRONG>" command):</FONT></P><FONT face=Verdana>
<P><FONT face="Courier New" color=#000080>controller T1 3/0<BR>&nbsp;shutdown<BR>&nbsp;framing esf<BR>&nbsp;linecode b8zs<BR>&nbsp;pri-group timeslots 1-24</FONT></P>
<P>or if you specified incorrect framing.</FONT></P>
<P><FONT face=Verdana>Hint: Gateways like any other hardware may fail and the ports may not come up because of the HW failure. But before blaming the HW, try a little trick, plug the working cable (the one that was ACTIVE on the Layer 1) into the supposedly failed port and wait for about 30 sec. If you see it coming up, then the port is OK. Unfortunately, if you see ACTIVE and TEI_ASSIGNED, then it is a config issue and will require further investigation.</FONT></P>
<P><FONT face=Verdana>If you want to get into the details of how gateway brings up the ISDN trunk, check the debug commands available under “<STRONG>deb isdn ?</STRONG>”.</FONT></P>
<P><FONT face=Verdana></FONT>&nbsp;</P>
<P><FONT face=Verdana><STRONG><EM>I changed the (controller/interface/voice-port) config but nothing happen. What should I do?</EM></STRONG></FONT></P>
<P><FONT face=Verdana>Some things don’t get changed immediately. Restarting trunk takes time (somewhere around 30 sec before you see MULTIPLE_FRAME_ESTABLISHED if started successfully). If you turn on debugging, you will see the changes. I usually recommend restarting the particular controller or interface (using “<STRONG>sh</STRONG>”/”<STRONG>no sh</STRONG>” command) and closely monitor the debug output for errors or unexpected messages.</FONT></P>
<P><FONT face=Verdana>Actually, I’m playing with one of the controllers while writing this and ran into the same problem. The trunk was up and running. After “<STRONG>sh</STRONG>” and ”<STRONG>no sh</STRONG>” on the controller it went down and came back after a while. I did the same in the serial interface, but it went down and never came back. So, after restarting the controller again, everything came up. In other words, shake it here and there and at some point&nbsp;everything will start working... :-)</FONT></P>
<P><FONT face=Verdana></FONT>&nbsp;</P>
<P><FONT face=Verdana><STRONG><EM>How to know which called/calling numbers are coming from PSTN?</EM></STRONG></FONT></P>
<P><FONT face=Verdana>I personally find the “<STRONG>deb isdn q931</STRONG>” command the most useful in cases when configuring the dial plan. Just after the trunks are up, enable “deb isdn q931” and make a call to the number that should be routed to this trunk. If nothing appears, check that you didn’t forget “term mon” command in your telnet window. But if still nothing appears, you may want to talk to your PBX guys because they seem to mess up their routing and calls just don't get here.</FONT></P>
<P><FONT face=Verdana>Normally, when making a call you would see something like this:</FONT></P>
<P><FONT face="Courier New" color=#000080>*May 19 03:17:01.222: ISDN Se3/1:23 Q931: RX &lt;- SETUP pd = 8&nbsp; callref = 0x077C<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Bearer Capability i = 0x8090A2<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Standard = CCITT<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transer Capability = Speech<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transfer Mode = Circuit<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transfer Rate = 64 kbit/s<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Channel ID i = 0xA98395<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exclusive, Channel 21<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>Calling Party Number i = 0x2183, '4255551310'</STRONG><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Plan:ISDN, Type:National<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>Called Party Number i = 0xC1, '5553903'<BR></STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Plan:ISDN, Type:Subscriber(local)</FONT></P>
<P><FONT face=Verdana>(followed by more messages like CALL_PROC, CONNECT and other Q.931 messages). There are two things you may take from this debug spew: the <EM>called party number</EM> (or <EM>DNIS</EM>) and the <EM>calling party number</EM> (or <EM>ANI</EM>, or <EM>caller ID</EM>). Both fields (called information elements in ISDN) are optional and it’s possible that your PBX may give you any of them or none.</FONT></P>
<P><FONT face=Verdana>Actually, before configuring dial plan I usually check the phone numbers by&nbsp;making test calls and verify the following (don't expect them to be answered yet, just pay attention on SETUP message):</FONT></P>
<OL>
<LI><FONT face=Verdana>All numbers are routed to the gateway (i.e. each dialing ends up with incoming SETUP message on the gateway).</FONT> 
<LI><FONT face=Verdana>SETUP message contains correct information about called and calling numbers (keep in mind that both called and calling party number are optional information elements in the Q.931 SETUP message and may be omitted).</FONT> 
<LI><FONT face=Verdana>Check how many digits the called/calling number has (7 or 10, or something proprietary if it’s in the lab environment) and design the dial plan accordingly.</FONT></LI></OL>
<P><FONT face=Verdana>Note: It may get very tricky in case when your IP endpoint requires some kind of DNIS (for example, when selecting an application to run) and your PBX doesn’t provide one. I remember doing it using translation rules, translating any incoming DNIS (including no DNIS) into some artificial phone number for the app right in the inbound dial-peer. While browsing the available commands in the gateway, I saw several new commands that seem to be helpful in this case. I'll try them when I have a chance.</FONT></P>
<P><FONT face=Verdana></FONT>&nbsp;</P>
<P><FONT face=Verdana><STRONG><EM>Can I figure out why the call was dropped from the Cause code in the Q.931 DISCONNECT message?</EM></STRONG></FONT></P>
<P><FONT face=Verdana>Not really. Though it gives you some ideas, but won’t help you figure out exact reason. Look:</FONT></P>
<P><FONT face="Courier New" color=#000080>*May 19 03:17:06.330: ISDN Se3/1:23 Q931: TX -&gt; DISCONNECT pd = 8&nbsp; callref = 0x877C<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cause i = 0x80A6 - Network out of order<BR>*May 19 03:17:06.418: ISDN Se3/1:23 Q931: RX &lt;- RELEASE pd = 8&nbsp; callref = 0x077C<BR>*May 19 03:17:06.418: ISDN Se3/1:23 Q931: TX -&gt; RELEASE_COMP pd = 8&nbsp; callref = 0x877C</FONT></P>
<P><FONT face=Verdana>This call was disconnected because the remote endpoint has IPSec on (while the calling gateway doesn’t) and the attempt to establish a TCP connection failed. The “network out of order” doesn’t really help here. Interestingly enough, even when you see “Normal call clearing”, it doesn’t really mean that the call was successful. Welcome to the ISDN world! :-)</FONT></P>
<P><FONT face=Verdana color=#0000ff><EM>BTW, playing with the Cause codes in general is not very good idea. Since you have no direct control over the device that is responsible for translating this code into a message or a tone, you don’t really know what the caller will hear. The worst scenario in this case is dead silence (systems that don’t respond usually cause frustration and result into bad user experience) and that can happen if the provided code is unknown to that switch. You can redefine the cause code with “<STRONG>isdn network-failure-cause</STRONG>” on the serial interface if you want to ensure that all unexpected network errors will map into some known code (like fast busy, for example). Another command “<STRONG>isdn disconnect-cause</STRONG>” also overrides the cause code in cases when gateway failed to connect the call.</EM></FONT></P>
<P><FONT face=Verdana>There is a long table with codes and descriptions published here: “<A href="http://www.cisco.com/en/US/products/sw/iosswrel/ps5187/products_command_reference_chapter09186a008017cfa4.html">ISDN Switch Types, Codes, and Values</A>”.</FONT></P>
<P>&nbsp;</P>
<P><FONT face=Verdana><STRONG><EM>Voice or data?</EM></STRONG></FONT></P>
<P><FONT face=Verdana>You have to remember to configure the serial interface so it could deal with the voice calls properly. Now, interestingly enough the command that configures this (under serial interface) has two options:</FONT></P>
<P><FONT face=Verdana><FONT face="Courier New" color=#000080>sdn5350u(config-if)#isdn incoming-voice ?<BR>&nbsp; data&nbsp;&nbsp; Incoming voice calls will be handled as data.<BR>&nbsp; modem&nbsp; Incoming voice calls will be handled as modems.</FONT></FONT></P>
<P><FONT face=Verdana>For voice calls you have to set to the “modem”, otherwise when calling in you’ll hear busy tone and the output from “<STRONG>deb isdn q931</STRONG>” will look similar to this:</FONT></P>
<P><FONT face="Courier New" color=#000080>*May 27 03:26:52.430: ISDN Se3/0:23 Q931: RX &lt;- SETUP pd = 8&nbsp; callref = 0x18B8<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Bearer Capability i = 0x8090A2<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Standard = CCITT<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transer Capability = Speech<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transfer Mode = Circuit<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transfer Rate = 64 kbit/s<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Channel ID i = 0xA98391<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exclusive, Channel 17<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Calling Party Number i = 0x2183, '4255558080'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Plan:ISDN, Type:National<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Called Party Number i = 0xC1, '5552084'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Plan:ISDN, Type:Subscriber(local)<BR>*May 27 03:26:52.434: ISDN Se3/0:23 <STRONG>**ERROR**: call_incoming: call id 0x5AD0 call treated as DOV</STRONG><BR>*May 27 03:26:52.438: ISDN Se3/0:23 Q931: TX -&gt; CALL_PROC pd = 8&nbsp; callref = 0x98B8<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Channel ID i = 0xA98391<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exclusive, Channel 17<BR>*May 27 03:26:52.442: ISDN Se3/0:23 Q931: TX -&gt; DISCONNECT pd = 8&nbsp; callref = 0x98B8<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cause i = 0x80AC - <STRONG>Requested circuit/channel not available</STRONG><BR>*May 27 03:26:52.526: ISDN Se3/0:23 Q931: RX &lt;- RELEASE pd = 8&nbsp; callref = 0x18B8<BR>*May 27 03:26:52.526: ISDN Se3/0:23 Q931: TX -&gt; RELEASE_COMP pd = 8&nbsp; callref = 0x98B8</FONT></P>
<P><FONT face="Courier New" color=#000080></FONT>&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Some basic steps on configuring the Cisco VoIP gateway</title>
      <link>https://docs.microsoft.com/archive/blogs/rita_z/some-basic-steps-on-configuring-the-cisco-voip-gateway</link>
      <pubDate>Mon, 19 Sep 2005 17:25:00 GMT</pubDate>
      <dc:creator><![CDATA[Rita Z]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/rita_z/2005/09/19/some-basic-steps-on-configuring-the-cisco-voip-gateway/</guid>
      <description><![CDATA[I admit I have some kind of a soft spot for Cisco. Though at some point my picture was probably on...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-FAMILY: Verdana">I admit I have some kind of a soft spot for Cisco. Though at some point my picture was probably on the dart board in their TAC (Technical Assistance Center) considering the number of issues we discovered in early versions of H.323 implementation and configuration in IOS, but I do enjoy configuring the Cisco devices and troubleshooting problems using IOS debug facilities. You can find pretty much anything in the gateway’s debug logs, learn protocols and protocol state machines, the only problem is to know where (and what) to look...</SPAN></P><SPAN style="FONT-FAMILY: Verdana">
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">In the IVR-like platforms where the IVR is actually in the IP space the main scenario is the call that is originated on the PSTN and terminated on IP. Assuming the configuration similar to what we’re running in our Lab, we have a Cisco AS5350 gateway with several T1 ISDN PRI lines connected to it on the telephony side and a single Ethernet 100 Base T connection on the IP side and that’s the gateway I’m using in my examples below.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><STRONG><EM>How do I access the gateway?</EM></STRONG></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">There are two popular ways of doing it: using the console and via telnet. Using console is evil but if you cannot telnet to your gateway (for example, after a power outage gateways, the console may be your only choice). Why evil? Because of the CPU load required for in/out traffic. Cisco routers prioritize console traffic over any other operations. If you only do configuration and have all logging off, it’s OK. Once you start turning on debugging, you may end up with the router that doesn’t respond because it’s busy generating output. Read more on how to use debug properly here: “<A href="http://www.cisco.com/en/US/tech/tk801/tk379/technologies_tech_note09186a008017874c.shtml">Important Information on Debug Commands</A>”.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">The Windows Hyperterminal app provides you the access to the router’s console (and yes, you’ll need to connect the COM port with the gateway's&nbsp;console port).</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Once the gateway up and you can ping it, switch to the Telnet. Verify that your config has “no logging console” or the worries above (about hanging the router due to excessive logging) apply.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">BTW, it helps to keep your sessions with the gateway logged. Just use “telnet -f filename.txt xx.xx.xx.xx” and it will save the session in a text file.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><STRONG><EM>What do I need to know to start configuring the gateway?</EM></STRONG></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">I typed this question and started laughing. It takes time to learn an operating system. In this case you need even more time to learn the protocols this OS is dealing with. And in this particular case (VoIP gateways) you’ll need to learn the protocols that are applicable to both sides: the telephony and the Ethernet. And that’s a lot though it’s all incredibly interesting. I wonder where to begin...</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">There are several commands that you’ll use always:<BR>“<STRONG>term mon</STRONG>” (terminal monitor) and “term no mon” – they turn on and off the debug output in your telnet session.<BR>“<STRONG>sh run</STRONG>” (show running-config) – displays the configuration that your gateway is currently running with. <BR>“<STRONG>sh deb</STRONG>” (show debug) – lists all the enabled debug<BR>“<STRONG>u all</STRONG>” (undebug all) – turns off all debug<BR>“<STRONG>conf t</STRONG>” (configure terminal) – enter the configuration mode; here you can modify the running configuration.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">And finally, don’t forget to save your configuration once you finished configuring whole (or part) of it. The “official” way is to type “<STRONG>copy running-config startup-config</STRONG>” (or <STRONG>copy run start</STRONG>) but simple “<STRONG>wr</STRONG>” (write) will do it. I prefer less typing... :-)</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><STRONG><EM>The “sh run” output is long. Any navigation tricks?</EM></STRONG></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Actually, yes. Once the basic config is done, and you only need to tweak some properties in the dial-plan (in other words, you know where you want to go in the config, you just want to look at it first), you may skip all the text by typing “/” and the search string.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">For example, “/voip” takes me to the first voip dial-peer in our config, skipping all the interfaces and POTS dial-peers.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Another thing I found quite useful is to have two telnet sessions at the same time. Have one with "term mon" and nesessary debug on, and another with "term no mon" where you can configure the gateway. It helps not to loose tracks when debug output gets mixed with configuration commands.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"></SPAN><SPAN style="FONT-FAMILY: Verdana"><STRONG><EM>It says "Invalid input detected" when I type "sh run". Why?</EM></STRONG></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-FAMILY: Verdana">So you see something like this:</SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-FAMILY: Verdana"><FONT face="Courier New" color=#000080>sdn5350u&gt;sh run<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ^<BR>% Invalid input detected at '^' marker.</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-FAMILY: Verdana">You have to get into enabled mode first. Type "<STRONG>en</STRONG>" (enable) command and when prompted, enter a password. Normally, it will be a different password that you used for initial login though it's possible to have the same (don't, unless you plan to use this GW as a test machine in your lab only).</SPAN></P>]]></content:encoded>
    </item>
  </channel>
</rss>