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, this 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
...
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)
Nortel MCS5100
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):
Asterisk
Edit sip.conf as follows (replace everything between <> for your situation):
No Format |
---|
[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:
No Format |
---|
[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 |