Skip to main content

Connecting with Nortel

About

This is to show how the Nortel type boxes can be connected as gateways/calling can occur between the systems. We are new to FreeSWITCH and Nortel so this may not all make perfect sense but is a start, this was started because basic calls are working between the systems.

Typical Architecture and Call Control

This is the typical architecture for a Nortel CS system.

                    +-------+   1. REG/INVITE
| NRS |-------------------+
+-------+ |
|| |
+-------+ +-------+ 2. REINV... +-------+
| CS |---------| SS |---------------| FS |
+-------+ +-------+ +-------+
| |DSP| |
R| +---+ 3a. RTP |
E| |DSP|-------------------------------------+ OR (directly to the phone or to media on the CS)
G| +---+ |
| |
+-----+ 3b. RTP |
|PHONE|---------------------------------------+
+-----+

The CS is sitting behind a SIP gateway called a Signaling Server. The Network Routing Service (NRS) is simply a lookup for location of endpoints in the system-a redirect server. This will only be used to REGISTER and send INVITEs to as seen with the connection marked 1. Upon an INVITE the NRS will respond with a 302 which will send FreeSWITCH to one of the Signaling Servers which will translate the SIP call control into something the CS can understand marked with 2. Then, typical RTP will go from the CS or from the specific endpoint as marked in 3a/b.

Nortel Setup

Sorry for the limited details, but we didn't setup this side-will get more info but was told it was a simple gateway setup with name/password and transport configured. Not very much configurable on the Nortel side.

FreeSWITCH Setup

Since this is the most flexible side, all the configuration was done on the FreeSWITCH side to convert it to a method that the Nortel side liked.

SIP Profile

Add a gateway profile for the NRS, just a typical gateway with actual registration, but you will need to supply the realm to be as configured with the Nortel box. The keep-alives will be REGISTERs from the NRS typically with an expiry of 30s, which FreeSWITCH will respond successfully with OKs.

<include>
<gateway name="fs_cs">
<!--/// account username *required* ///-->
<param name="username" value="interop"/>
<!--/// auth realm: *optional* same as gateway name, if blank ///-->
<param name="realm" value="cs_domain.com"/>
<!--/// account password *required* ///-->
<param name="password" value="interop"/>
<!--/// proxy host: *optional* same as realm, if blank ///-->
<param name="proxy" value="192.168.15.8"/>
<!--/// do not register ///-->
<param name="register" value="true"/>
<!-- which transport to use for register -->
<param name="register-transport" value="tcp"/>
</gateway>
</include>

In the SIP profile the auth-calls should be turned off to allow this to work.

ACLs

Add the NRS ip and the cs_domain to the ACL domain list.

Dialplan

The dialplan is the tricky part to allow the NRS redirection to work properly. Basically, the URI has cannot have a domain in, so we cannot use a gateway profile to bridge the calls because this will automatically be added in the INVITE. Use the following:

<action application="bridge" data="sofia/internal/sip:$1;phone-context=cdp.udp@cs_domain.com;maddr=<NRS IP>;user=phone"/>

IMPORTANT: The order of phone-context/maddr/user is very important for this to work properly.

Features Tested

There were some features that have been tested to far listed here:

  • Calls in/out work.
  • DTMF works with default settings.

Issues

Not completely finished yet is how the Nortel box handles different phone-contexts, which is of concern to dialing to the correct location on the Nortel box, but simple internal calls to the cdp.udp context will work. This will be added as it solved.

Second, there was an instance in our testing that the NRS sent a 300 Multiple Choices message that is not handled in Sofia-SIP (http://sourceforge.net/tracker/index.php?func=detail&aid=1676445&group%5Fid=143636&atid=756076) which claims the application should handle this. A FreeSWITCH enhancement ticket should be opened for this.

Simpler Integration

Alternatively, FreeSWITCH can point directly to the Signaling Server OR Nortel BCM works the same way without registrations. Calls will be sent in and out like basic UAs calling, just setup the ACLs appropriately.

Inbound Calls

Some Nortel BCMs (System Software Version 4.0) send a SIP dialstring that looks something similar to this:

1000;phone-context=suscriber.private

To have FreeSWITCH handling this properly, you can use the following regex:

^(10\d{2});(.*)$

And use $1 in your bridge/transfer action.