The following is an example config for using a Cisco Integrated Services Router - in this case, a 3945 with IOS15.1 - serving as a gateway to the PSTN. The following configuration:
- Is US-centric regarding dial plan;
- Has 3 ISDN-PRI's in an NFAS group for the PSTN connectivity;
- Includes config to utilize Cisco's Survivable Remote Site Telephony for sipX phones when this router is located in a Branch;
- Includes config to interoperate with 3 sipX servers composing a single cluster (tweak to your needs);
- Will generate OPTIONS pings during calls to ensure media path is alive;
- Includes examples for ipv4 address trust lists, which must be configured to enable your sipX servers and phones to route calls through the gateway;
- Does NOT include routing, authentication, QoS, or other config - this is the sipX interoperation only.
In the example below, values offset with <value> will be specific to your implementation. You also have the option of enabling TCP or UDP for signaling, as noted by <tcp|udp> in the config - select one.
In sipX, the router should be set up as an unmanaged gateway; and the phones set with the router's FQDN or IP address as their secondary registration server in order for SRST to work. You will have to test registration timers for both Primary and Secondary in Phone Groups to make sure SRST works to your liking.
version 15.1
card type t1 0 0
card type t1 0 1
!
network-clock-participate wic 0
network-clock-participate wic 1
network-clock-select 1 T1 0/0/0
!
ip dhcp pool VOIP
network <voip.subnet> <netmask>
option 66 ascii "tftp://<sipx.ip>"
default-router <router.ip>
dns-server <dns1.ip> <dns2.ip>
domain-name <domain.name>
lease 0 8
!
ip domain retry 0
ip domain timeout 2
ip domain name <domain.name>
ip host <sipx1.fqdn> <sipx1.ip.addr>
ip host <sipx2.fqdn> <sipx2.ip.addr>
ip host <sipx3.fqdn> <sipx3.ip.addr>
ip host _sip._udp.<sipx1.fqdn> srv 1 0 5060 <sipx1.fqdn>
ip host _sip._udp.<sipx2.fqdn> srv 2 0 5060 <sipx2.fqdn>
ip host _sip._udp.<sipx3.fqdn> srv 3 0 5060 <sipx3.fqdn>
ip host _sip._tcp.<sipx1.fqdn> srv 1 0 5060 <sipx1.fqdn>
ip host _sip._tcp.<sipx2.fqdn> srv 2 0 5060 <sipx2.fqdn>
ip host _sip._tcp.<sipx3.fqdn> srv 3 0 5060 <sipx3.fqdn>
!
isdn switch-type primary-ni
!
trunk group pri
description Hunt group for pri ports
hunt-scheme longest-idle
translation-profile incoming FROM-PRI
!
voice-card 0
dspfarm
dsp services dspfarm
!
voice service pots
!
voice service voip
ip address trusted list
ipv4 <sipx1.ip.addr> <netmask>
ipv4 <sipx2.ip.addr> <netmask>
ipv4 <sipx3.ip.addr> <netmask>
ipv4 <phone.vlan.subnet>
clid substitute name
allow-connections h323 to sip
allow-connections sip to h323
allow-connections sip to sip
fax protocol none
h323
no call service stop
modem passthrough nse codec g711ulaw
sip
bind control source-interface <interface>
bind media source-interface <interface>
session transport <tcp|udp>
min-se 120 session-expires 120
registrar server expires max 600 min 60
options-ping 300
!
voice class codec 4
codec preference 1 g711alaw
codec preference 2 g711ulaw
codec preference 3 g729r8
!
voice register global
max-dn 80
max-pool 100
!
voice translation-rule 1
rule 1 /<telco.digits>/ /<extn.range>\1/
!
voice translation-rule 3
rule 1 /\(^.*\)/ /1\1/ type any unknown plan any unknown
rule 2 /\(^.*\)/ /011\1/ type international international
!
voice translation-rule 10
rule 1 /^1\(.*\)/ /\1/
!
voice translation-rule 666
rule 1 reject /<some.rule>/
!
!
voice translation-profile CLID_PREPEND
translate calling 3
!
voice translation-profile FROM-PRI
translate called 1
!
voice translation-profile TO_PSTN
translate calling 10
!
voice translation-profile call_block
translate calling 666
!
controller T1 0/0/0
cablelength long 0db
pri-group timeslots 1-24 nfas_d primary nfas_int 0 nfas_group 1
!
controller T1 0/0/1
cablelength long 0db
pri-group timeslots 1-24 nfas_d backup nfas_int 1 nfas_group 1
!
controller T1 0/1/0
cablelength long 0db
pri-group timeslots 1-24 nfas_d none nfas_int 2 nfas_group 1
!
interface Serial0/0/0:23
no ip address
encapsulation hdlc
isdn switch-type primary-ni
isdn incoming-voice voice
isdn supp-service name calling
trunk-group pri
no cdp enable
!
ip dns view default
domain timeout 2
domain retry 0
ip rtcp report interval 5003
!
voice-port 0/0/0:23
!
voice-port 0/1/0:23
!
voice-port 0/0/1:23
!
no ccm-manager fax protocol cisco
!
!
dial-peer voice 911 pots
trunkgroup pri
description Emergency Services
preference 1
destination-pattern 9911
progress_ind alert enable 8
progress_ind progress enable 8
direct-inward-dial
forward-digits 3
!
dial-peer voice 9000 voip
description sipx
call-block translation-profile incoming call_block
preference 3
destination-pattern <extension.range>
progress_ind setup enable 3
modem passthrough nse codec g711ulaw
session protocol sipv2
session target sip-server
session transport <tcp|udp>
incoming called-number .
dtmf-relay rtp-nte sip-notify sip-kpml
codec g711ulaw
fax rate 14400
fax protocol t38 version 0 ls-redundancy 5 hs-redundancy 2 fallback none
no vad
!
dial-peer voice 91 pots
trunkgroup pri
description Outgoing Calls
translation-profile incoming CLID_PREPEND
translation-profile outgoing TO_PSTN
preference 1
destination-pattern 9T
progress_ind alert enable 8
progress_ind progress enable 8
incoming called-number .
direct-inward-dial
!
!
gateway
timer receive-rtp 1200
!
sip-ua
retry invite 2
retry bye 2
retry cancel 2
retry notify 6
retry options 4
timers trying 100
timers notify 100
timers buffer-invite 500
timers options 1000
sip-server dns:<sipx.domain>
refer-ood enable
handle-replaces
!
!
!
gatekeeper
shutdown