Goal

To enable users registered at a Nortel MCS5100 SIP proxy to call to other SIP domains, and be reachable from other domains in a scalable manner.

Applicability

Nortel MCS5100 can only accept external SIP calls from domains that are statically entered into the configuration. If the end-users that are registered at the MCS want to call 'outside', or want to be reached from outside, the administrator would have to enter each domain that end users would like to call or be called from, which would require too much work. This recipe can make it possible using Asterisk as a SIP Border Controller (SBC).

The call scenario involves the following nodes:

      UA A    ->    MCS5100    ->    SBC    ->    proxy domainB    ->    UA B

Calling from the MCS domain to the outside world requires a trick, namely

if you're using UA A and you want to call user B with address

      userB@domainB.net,

you must type into the Nortel MultiMedia PC client softclient the following address

      userB_domainB.net@sbc.domainA.net

so the original '@' must be replaced by an underscore, and the new URI must be followed by the domain that corresponds with the SBC, so that the MCS can forward it to the SBC.

Prerequisites (OS, dependencies on other software)

  • Nortel MCS5100 3.5.7
  • Asterisk 3.1 (in this example on Redhat 4)
  • DNS SRV records for SIP pointing at the SBC for domainA (instead of the MCS)

Configuration (OS agnostic)

Configuration of the Nortel MCS5100 proxy

In the administrator web interface, adjust the following settings:

Add a foreign domain for the SBC:


 
And make sure that the MCS services its own IP address when you look at the main properties of the 'domainA.net' domain (click on the map icon that corresponds with your domainA in the menu on the left, which is 'surfnet.nl' in this picture):
 

Configuration of the Asterisk SBC

Edit sip.conf as follows (replace everything between <> for your situation):

[general]
port=5060
bindaddr=0.0.0.0
context=in-guest
language=nl
recordhistory=yes
realm=<sbc.domainA.net>
srvlookup=yes
tos=lowdelay
maxexpirey=3600
defaultexpirey=60
videosupport=yes
useragent=<SBC>
canreinvite=no
callerid=unknown
;autocreatepeer = yes
#include codecs.inc

; Anonymous inbound SIP calls
[guest_inbound]
type=user
context=in-guest
nat=yes

; Nortel MCS
[<domainA.net>]
type=friend
host=<IPaddress of MCS>
context=in-pbx
insecure=very
qualify=yes
fromdomain=<sbc.domainA.net
fromuser=sbc

Edit extensions.conf as follows:

[general]
static=yes
writeprotect=yes

;######################################################
;##               Local extensions                   ##
;######################################################
[default]

;######################################################
;##                    Variables                     ##
;######################################################
[globals]


;######################################################
;##                  Macro's                         ##
;######################################################
[macro-safedial]
exten = s,1,Dial(${ARG1},${ARG2},${ARG3},${ARG4})
exten = s,2,Goto(s-${DIALSTATUS},1)
exten = s-CANCEL,1,Hangup
exten = s-NOANSWER,1,GotoIf($["${DIALEDTIME}" = "0"]?3)
exten = s-NOANSWER,2,Hangup
exten = s-NOANSWER,3,Verbose(1,Need failover for "${ARG1}")
exten = s-BUSY,1,Busy
exten = s-CHANUNAVAIL,1,Verbose(1,Need failover for "${ARG1}")
exten = s-CONGESTION,1,Congestion
exten = _s-.,1,Congestion
exten = s-,1,Congestion


;######################################################
;##               Inbound lines                      ##
;######################################################
[in-guest]
; Anonymous SIP calls
; Accepted formats:
; <cc><ac><pref><ext>
; <0><ac><pref><ext>
; <ext>
; firstname.lastname
exten = _[0-9A-Za-z].,1,Verbose(1,Routing external call from ${CALLERID}
to ${EXTEN} on ${CHANNEL})
exten = _[0-9A-Za-z].,n,Dial(SIP/erik.dobbelsteijn@surfnet.nl)
exten = _[0-9A-Za-z].,n,Busy
exten = _[0-9A-Za-z].,n,Hangup

[in-pbx]
; Routable traffic from the MCS
exten = _[0-9A-Za-z].,1,Verbose(1,Routing MCS call from ${CALLERID} to
${EXTEN} on ${CHANNEL})
exten = _[0-9A-Za-z].,n,Set(REQURI=${CUT(EXTEN,_,1)})
exten = _[0-9A-Za-z].,n,Set(REQDOMAIN=${CUT(EXTEN,_,2)})
exten = _[0-9A-Za-z].,n,Verbose(1,Rewrote MCS call from ${CALLERID} to
${REQURI}@${REQDOMAIN} on ${CHANNEL})
exten = _[0-9A-Za-z].,n,Dial(SIP/${REQURI}@${REQDOMAIN})


[inbound-router]
include = route-dnid
include = route-vpbx
exten = i,1,Congestion



;######################################################
;##                   Routing tables                 ##
;######################################################
;
; International call formats used
;
[routing]
;include = route-local
;include = route-smarthost

exten = i,1,Congestion
exten = t,1,Busy

OS specific help

Validation, confirmation tests