I have a scenario where I am attempting redundant FXS registrations to two separate trunks (T01 and T02).
The registrations are working with success.
I would like to allow access for ingress calls from both of the trunks (T01 and T02) to complete to the FXS voice user lines.
My egress Termination call scenarios seem to route as desired, first to T01 then to T02 if non-response, 503 etc…with success.
However, if ingress calls come in from T01 they work, but if calls are ingress from T02, I get the following error:
15:57:02.648 VOICE.SUMMARY T02 is calling T01 (xxxxxxxxx).
15:57:02.649 VOICE.SUMMARY Call from T02 to T01 (xxxxxxxxxx) ended by T01: resource unavailable
I am trying to build a config that will allow the voice users to be registered to both T01 and T02 simultaneously.
In addition to this set up, I need both the ingress and egress calls to utilize both trunks in a redundant failover manner.
Please see current config below and advise on a best practices solution:
TEST-ADT-01#sh run
Building configuration...
!
!
! ADTRAN, Inc. OS version R13.5.1.E
! Boot ROM version R10.9.3.B1
! Platform: Total Access 908e (3rd Gen), part number
! Serial number
!
!
hostname "TEST-ADT-01"
enable password encrypted xxxxx
!
!
clock timezone -5-Eastern-Time
!
ip subnet-zero
ip classless
ip default-gateway 10.255.220.1
ip routing
ipv6 unicast-routing
!
!
name-server X.X.X.X x.x.x.x
!
!
no auto-config
auto-config authname adtran encrypted password xxxxxx
!
event-history on
no logging forwarding
no logging email
!
service password-encryption
!
username "XXXXXXXXX" password encrypted "xxxxxxxxxxxxxxxxx"
!
!
ip firewall
no ip firewall alg msn
no ip firewall alg mszone
no ip firewall alg h323
!
!
!
!
!
!
!
!
no dot11ap access-point-control
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface eth 0/1
encapsulation 802.1q
no shutdown
!
!
interface eth 0/1.220
vlan-id 220
ip address 10.255.220.20 255.255.255.0
media-gateway ip primary
no shutdown
!
interface eth 0/2
ip address 192.168.66.95 255.255.255.0
no shutdown
media-gateway ip primary
!
!
!
interface gigabit-eth 0/1
no ip address
shutdown
!
!
!
!
interface t1 0/1
shutdown
!
interface t1 0/2
shutdown
!
interface t1 0/3
shutdown
!
interface t1 0/4
shutdown
!
!
interface fxs 0/1
no shutdown
!
interface fxs 0/2
no shutdown
!
interface fxs 0/3
no shutdown
!
interface fxs 0/4
description "OSN Test DID - +xxxxxxxxxxx"
no shutdown
!
interface fxs 0/5
description "OSN Test DID - +xxxxxxxxxx"
no shutdown
!
interface fxs 0/6
no shutdown
!
interface fxs 0/7
no shutdown
!
interface fxs 0/8
no shutdown
!
!
!
!
!
!
!
ip access-list standard MGMT
permit X.X.X.X 0.0.0.255
permit X.X.X.X 0.0.0.7
permit X.X.X.X 0.0.0.31
permit X.X.X.X 0.0.0.255
permit X.X.X.X 0.0.0.255
permit X.X.X.X 0.0.0.255
permit X.X.X.X 0.0.0.255
!
!
!
!
!
!
ip route 0.0.0.0 0.0.0.0 10.255.220.1
!
no tftp server
no tftp server overwrite
http server
http secure-server
snmp agent
no ip ftp server
no ip scp server
no ip sntp server
!
!
!
!
snmp-server community xxxx RO
!
!
!
!
sip
sip udp 5060
no sip tcp
no sip tls
!
!
voice international-prefix abbreviated
!
voice feature-mode network
voice timeouts interdigit 5
voice flashhook mode transparent
voice forward-mode network
voice num-rings 9
!
!
!
!
voice spre 1 *XX
!
!
!
!
voice dial-plan 2 local N11
voice dial-plan 3 local 1-NXX-NXX-XXXX
voice dial-plan 4 international 011XXXXXXXXXXXX
voice dial-plan 5 international 00XXXXXXXXXXXX
!
!
!
!
voice class-of-service GLOBAL
call-privilege all
!
voice codec-list GLOBAL
default
codec g711ulaw
codec g729
!
!
!
voice trunk T01 type sip
description "AAAAA"
sip-server primary X.X.X.X
registrar primary X.X.X.X
conferencing-uri "t"
max-number-calls 10
codec-list GLOBAL both
update-supported
!
voice trunk T02 type sip
description "BBBBB"
sip-server primary Y.Y.Y.Y
registrar primary Y.Y.Y.Y
conferencing-uri "t"
max-number-calls 10
codec-list GLOBAL both
update-supported
!
!
voice grouped-trunk AAAAA
description "Connection to AAAAA (Ingress/Egress)"
trunk T01
accept $ cost 0
accept XXXXXXXXXXX cost 0
accept XXXXXXXXXX cost 0
!
!
voice grouped-trunk BBBBB
description "Connection to BBBBB (Ingress/Egress)"
trunk T02
accept $ cost 0
accept XXXXXXXXXXX cost 0
accept XXXXXXXXXX cost 0
!
!
voice userYYYYYYYYYYY
connect fxs 0/4
cos "GLOBAL"
password encrypted "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
no call-waiting
did "xxxxxxxxxxx"
no special-ring-cadences
no message-waiting
sip-identity xxxxxxxxxxx T01 register auth-name "xxxxxxxxxxx" password encrypted "aaaaaaaaaaaaaaaaaaaaaaa"
sip-identity xxxxxxxxxxx T02 register auth-name "xxxxxxxxxxx" password encrypted "bbbbbbbbbbbbbbbbbbbbbbbb"
sip-authentication password encrypted "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
modem-passthrough
t38
no echo-cancellation
rtp dtmf-relay inband
codec-list GLOBAL
!
!
!
voice user zzzzzzzzzzzzzzzz
connect fxs 0/5
cos "GLOBAL"
password encrypted "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
description "+zzzzzzzzzzzzzz"
no call-waiting
did "zzzzzzzzzz"
no special-ring-cadences
no message-waiting
sip-identity 6498010224 T01 register auth-name "zzzzzzzzzz" password encrypted "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
sip-identity 6498010224 T02 register auth-name "zzzzzzzzzz" password encrypted "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
sip-authentication password encrypted "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
modem-passthrough
t38
no echo-cancellation
rtp dtmf-relay inband
codec-list GLOBAL
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
sip session-timer
sip session-timer min-se 1800
!
!
!
!
!
!
!
!
line con 0
login
!
line telnet 0 4
login
password encrypted xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
no shutdown
ip access-class MGMT in
line ssh 0 4
login local-userlist
no shutdown
!
!
ntp peer pool.ntp.org
!
!
!
end
What I would do is to set up a registered SIP trunk on the Adtran itself to both providers.
voice trunk T01 type sip
description "AAAAA"
sip-server primary X.X.X.X
registrar primary X.X.X.X
register YYYYYYYYYY auth-name "zzzzzzzzz" password "zzzzzzzz"
register ZZZZZZZZZZ auth-name "zzzzzzzzz" password "zzzzzzzz"
conferencing-uri "t"
max-number-calls 10
codec-list GLOBAL both
update-supported
voice trunk T02 type sip
description "BBBBB"
sip-server primary X.X.X.X
registrar primary X.X.X.X
register YYYYYYYYYY auth-name "zzzzzzzzz" password "zzzzzzzz"
register ZZZZZZZZZZ auth-name "zzzzzzzzz" password "zzzzzzzz"
conferencing-uri "t"
max-number-calls 10
codec-list GLOBAL both
update-supported
The YYYYYYYYYY and ZZZZZZZZZZ in the register commands above are the DIDs of your FXS users, with appropriate auth-name and password.
Then delete the sip-identity and registration from the users themselves.
For scalability if you have more than one or two FXS users, inquire with your carriers about having a registered trunk instead of registering individual DIDs. This way you can add users without having to register all of them individually. The trunk uses a single "pilot" number to register and the SIP provider routes all of your DIDs down the same trunk.
What I would do is to set up a registered SIP trunk on the Adtran itself to both providers.
voice trunk T01 type sip
description "AAAAA"
sip-server primary X.X.X.X
registrar primary X.X.X.X
register YYYYYYYYYY auth-name "zzzzzzzzz" password "zzzzzzzz"
register ZZZZZZZZZZ auth-name "zzzzzzzzz" password "zzzzzzzz"
conferencing-uri "t"
max-number-calls 10
codec-list GLOBAL both
update-supported
voice trunk T02 type sip
description "BBBBB"
sip-server primary X.X.X.X
registrar primary X.X.X.X
register YYYYYYYYYY auth-name "zzzzzzzzz" password "zzzzzzzz"
register ZZZZZZZZZZ auth-name "zzzzzzzzz" password "zzzzzzzz"
conferencing-uri "t"
max-number-calls 10
codec-list GLOBAL both
update-supported
The YYYYYYYYYY and ZZZZZZZZZZ in the register commands above are the DIDs of your FXS users, with appropriate auth-name and password.
Then delete the sip-identity and registration from the users themselves.
For scalability if you have more than one or two FXS users, inquire with your carriers about having a registered trunk instead of registering individual DIDs. This way you can add users without having to register all of them individually. The trunk uses a single "pilot" number to register and the SIP provider routes all of your DIDs down the same trunk.