09-14-2016 01:28 AM - edited 03-12-2019 10:23 AM
So about a year ago I had to implement a back to back ISDN gateway. By this I mean that I needed to interface with a PBX solution that could only do ISDN and not SIP to the PSTN.
I had done something similar in the past where there was a CUCM and a Nortel solution that needed a connection for cross platform dialing but this solution was slightly different.
After much time spent on the Internet and speaking with others everything said it WAS possible but nobody had actually done it and I could find little to no documentation about it.
So the current setup had a Mitel PBX connected directly to the PSTN ISDN lines. The idea was to place a Cisco gateway "in-line" with the ISDN lines. This would mean that the Mitel system could place calls normally and the Cisco gateway would then place them to the PSTN. The Cisco gateway would therefore need to simulate the PSTN clocking to the Mitel so that the Mitel was oblivious to the change. The Cisco gateway would then need to interface with the PSTN and send the call out.
BEFORE IMAGE - See attachments
AFTER IMAGE - See attachments
As you can see from the diagrams above the Cisco gateway was placed directly in-line with the ISDN connections. Also as we were migrating from Mitel to Cisco we implemented additional PSTN lines for the migration.
So the call flows:
This is all fairly standard stuff
PSTN -> MITEL – Straight through the gateway to MITEL
MITEL -> PSTN – Straight thought the gateway to PSTN
PSTN -> Cisco – Straight though the gateway to the Cisco platform
Cisco -> PSTN – Straight thought the gateway to PSTN
Cisco - > Mitel – Call is placed to the DDI of a user on the Mitel, the call will be sent to the Cisco gateway and will then be sent over the 4 ISDN lines to the Mitel
Mitel -> Cisco – Call is placed to the DDI of a user on the Cisco, the call will be sent to the Cisco gateway and will then be sent over the SIP connection to the CUCM cluster
Migration:
The reason that this was done was that the client did not want to make any changes to the Mitel platform. This is why DDIs were used, this also meant that users dialling habits would remain the same. The phone books of each system were updated with the DDIs of people on the other platform.
This gateway allowed for granular control over incoming numbers, it meant that queues on the Cisco platform could be configured and tested with test numbers during the build and test phases. When it came to the cut over, individual numbers and lines could be cut over based upon the business requirements. This allowed for a very easy and safe way of directing numbers to and from each platform and gave the Cisco gateway absolute control of the number manipulation.
Enough with the background into the IOS gateway config.
The following is not the full IOS configuration but is the majority that is needed to get the system up and working. It will only focus on the specifics for the ISDN setup:
This is for a UK PSTN setup you will need to alter the settings and dialpeers based on your country requirments.
Sets the Card type to E1 (UK)
card type e1 0 0
card type e1 0 1
card type e1 0 2
Sets the clocking for the cards and the E1 lines
network-clock-participate wic 0
network-clock-participate wic 1
network-clock-participate wic 2
network-clock-select 1 E1 0/0/0
network-clock-select 2 E1 0/0/1
network-clock-select 3 E1 0/0/2
network-clock-select 4 E1 0/0/3
network-clock-select 5 E1 0/2/0
network-clock-select 6 E1 0/2/1
Sets the switch type
isdn switch-type primary-net5
Creates a PSTN Group of ISDN lines
trunk group PSTN-TRUNK
hunt-scheme sequential
Creates a MITEL Group of ISDN lines
trunk group MITEL-TRUNK
hunt-scheme sequential
This is needed to disconnect the ISDN calls when the remote party disconnects
voice call disc-pi-off
E1 Controller Config
----------PSTN-----------
controller E1 0/0/0
pri-group timeslots 1-31
!
controller E1 0/0/1
pri-group timeslots 1-31
!
controller E1 0/0/2
pri-group timeslots 1-31
!
controller E1 0/0/3
pri-group timeslots 1-31
!
----------MITEL-----------
controller E1 0/1/0
clock source internal
pri-group timeslots 1-31
!
controller E1 0/1/1
clock source internal
pri-group timeslots 1-31
!
controller E1 0/1/2
clock source internal
pri-group timeslots 1-31
!
controller E1 0/1/3
clock source internal
pri-group timeslots 1-31
!
----------PSTN-----------
controller E1 0/2/0
pri-group timeslots 1-31
!
controller E1 0/2/1
pri-group timeslots 1-31
The following is the setup for 1 ISDN interface for the PSTN connection. You will need the same for each interface
This sets up the ISDN line for the PSTN connection and adds it to the PSTN trunk. This is for a UK E1 connection, alter accordingly
interface Serial0/0/0:15
no ip address
encapsulation hdlc
isdn switch-type primary-net5
isdn incoming-voice voice
trunk-group PSTN-TRUNK
no cdp enable
The following is the setup for 1 ISDN interface for the MITEL connection. You will need the same for each interface
Notice the “overlap-receiving”, this was needed to allow for all of the digits as the Mitel system seemed to like to use overlap sending. Also notice the “protocol-emulate network” to provide clocking to the MITEL to simulate a PSTN ISDN.
interface Serial0/1/0:15
no ip address
encapsulation hdlc
isdn switch-type primary-net5
isdn overlap-receiving T302 2000
isdn protocol-emulate network
isdn incoming-voice voice
trunk-group MITEL-TRUNK
no cdp enable
For the voice ports all are configured are:
voice-port 0/0/0:15
cptone GB
bearer-cap Speech
From an ISDN part that is about all that is needed
Now you just need a good shaking of dial-peers and I mean a load of them.
Below are a few of the dialpeers I had to create:
Standard incoming dialpeers
Assumed for Cisco
dial-peer voice 100 pots
description Range1- 1111..
incoming called-number 1111..
direct-inward-dial
Assumed for Mitel
dial-peer voice 101 pots
description Range2- 2222..
incoming called-number 2222..
direct-inward-dial
Generic catch all
dial-peer voice 102 pots
trunkgroup PSTN-TRUNK
preference 2
incoming called-number .
direct-inward-dial
Dialpeers to CUCM
dial-peer voice 103 voip
description Inbound DDI range to CUCM SUB1
translation-profile outgoing INBOUND
preference 1
max-conn 255
destination-pattern 1111..
session protocol sipv2
session target ipv4:XXX.XXX.XXX.XXX
session transport tcp
voice-class sip options-keepalive up-interval 12 down-interval 65 retry 2
dtmf-relay rtp-nte
codec g711alaw
no vad
Dialpeers for MITEL
dial-peer voice 104 pots
trunkgroup MITEL-TRUNK
description MITEL RANGE2-2222..
preference 1
destination-pattern 2222..
progress_ind alert enable 8
progress_ind progress enable 8
progress_ind connect enable 8
progress_ind disconnect enable 8
direct-inward-dial
forward-digits all
Outbound Dialpeers
CUCM dial peer for outbound calls
dial-peer voice 105 pots
trunkgroup PSTN-TRUNK
description POTS Dial Peer
preference 1
destination-pattern 9T
progress_ind alert enable 8
progress_ind progress enable 8
progress_ind connect enable 8
progress_ind disconnect enable 8
direct-inward-dial
!
MITEL dialpeers for outbound calls
You have to take into account all numbers that are dialled by the PBX here. You don’t have a CUCM server to do any digit manipulation so you need to accept the digits from the PBX just like a PSTN provider
Generic Outbound dialpeer
dial-peer voice 106 pots
trunkgroup PSTN-TRUNK
description POTS Dial Peer
preference 1
destination-pattern 0T
progress_ind alert enable 8
progress_ind progress enable 8
progress_ind connect enable 8
progress_ind disconnect enable 8
direct-inward-dial
forward-digits all
UK Directory services dialpeer
dial-peer voice 107 pots
trunkgroup PSTN-TRUNK
description POTS Dial Peer
preference 1
destination-pattern 118...
progress_ind alert enable 8
progress_ind progress enable 8
progress_ind connect enable 8
progress_ind disconnect enable 8
direct-inward-dial
forward-digits all
UK Emergency dialpeer
dial-peer voice 108 pots
trunkgroup PSTN-TRUNK
description 999 EMERGENCY
preference 1
destination-pattern 999
progress_ind alert enable 8
progress_ind progress enable 8
progress_ind connect enable 8
progress_ind disconnect enable 8
direct-inward-dial
forward-digits all
!
EMEA Emergency dialpeer
dial-peer voice 109 pots
trunkgroup PSTN-TRUNK
description 112 EMERGENCY
preference 1
destination-pattern 112
progress_ind alert enable 8
progress_ind progress enable 8
progress_ind connect enable 8
progress_ind disconnect enable 8
direct-inward-dial
forward-digits all
UK Restrict CLI Dialpeer
dial-peer voice 110 pots
trunkgroup PSTN-TRUNK
description SHOW CLI
preference 1
destination-pattern 1470T
progress_ind alert enable 8
progress_ind progress enable 8
progress_ind connect enable 8
progress_ind disconnect enable 8
direct-inward-dial
forward-digits all
UK Allow CLI Dialpeer
dial-peer voice 111 pots
trunkgroup PSTN-TRUNK
description RESTRICT CLI
preference 1
destination-pattern 141T
progress_ind alert enable 8
progress_ind progress enable 8
progress_ind connect enable 8
progress_ind disconnect enable 8
direct-inward-dial
forward-digits all
Catchall dialpeer for Mitel
dial-peer voice 112 pots
trunkgroup FROM-MITEL
preference 2
incoming called-number .
direct-inward-dial
There are many other dialpeers needed but this is the basic that you will need but this will differ from setup to setup
Translation Rules
So in order to prevent Callers from each system placing a call to the PSTN for an internal number as they will be dialling the full DDI you need to catch that and then loop it.
Area code is assumed to be 333 333 with 6 digits for the number (as above these ranges are 1111.. and 2222..)
Voice translation-rule 1
rule 1 /^333333\(1111..\)/ /\1/
rule 2 /^333333\(2222..\)/ /\1/
voice translation-profile LOOPMYCALL
translate called 1
This dialpeer will match the internal Cisco range and then apply a voice translation profile using the above rules. This will alter the number to match the inbound dialpeer and then rout the call correctly. You should probably also set the codec here if you want DTMF to work.
dial-peer voice 113 pots
description Range1 -1111..
translation-profile incoming LOOPMYCALL
preference 1
incoming called-number 3333331111..
direct-inward-dial
I hope this helps anyone looking to do something similar
Gary
Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: