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