Home

Resources

Products

Developers

Main • Routing

Routing modules

Yate supports multiple routing modules that can be used together:

The priority of each of these modules can be adjusted to implement fallbacks to other methods.

Round-robin routing

Combining the callfork module with the rotate function from regexroute it is possible to implement round-robin routing, with or without fallback.

Let's suppose we route all numbers starting with 031 through two main SIP providers and we have one H.323 provider as fallback.
We set in regexroute.conf an entry like this:

^031.*$=fork $(rotate,$idx031,| sip/sip:\0@provider1.net,| sip/sip:\0@provider2.net) | h323/1010\0@provider3.net);maxcall=20000

We defined a list of two SIP call targets inside a rotate function. We also use a global (persistent between calls) variable conveniently named $idx031 so we remember it only rotates calls to the 031 prefix. Any other global variable name could be used.

The H.323 fallback route is placed outside the rotate function so it's always called last. The maxcall parameter of the message applies to all outgoing calls. There is currently no way of setting separate parameters for each individual call.

The first call comes in - let's suppose for 0310123. The initial value of variable $idx031 is undefined so zero will be assumed.
The following targets will be tried in sequence, each for 20 seconds (set by the maxcall parameter):

SIP: sip:0310123@provider1.net
SIP: sip:0310123@provider2.net
H.323: 10100310123@provider3.net

The first that answers will continue the call. If any of them fails the call will attempt the next target.
A side effect of the rotate function is to update the value of the global $idx031 variable. Since we defined only two rotation targets the value will cycle between the values 0 and 1.

Now a call comes in for 0319876. Since the previous call has changed $idx031 to 1 the attempted targets will be:

SIP: sip:0319876@provider2.net
SIP: sip:0319876@provider1.net
H.323: 10100319876@provider3.net

Finally, if instead of rotate we use the index function we will get round-robin routing without fallback between the two SIP providers, only with H.323 fallback route. Suppose we route:

^031.*$=fork $(index,$idx031,| sip/sip:\0@provider1.net,| sip/sip:\0@provider2.net) | h323/1010\0@provider3.net;maxcall=20000

The same incoming calls will generate outgoing calls to:

SIP: sip:0310123@provider1.net
H.323: 10100310123@provider3.net

and respectively:

SIP: sip:0319876@provider2.net
H.323: 10100319876@provider3.net

3 May 2010:
Yate 3.0.0 alpha 3 released. Featuring the new Jabber server and wideband audio.
Download NOW

8 March 2010:
Yate 2.2 released. Mostly bug fixes. Dahdi compatible. Latest 2 release before 3.0.

6-7 February 2010:
Yate booth at FOSDEM 2010. Free CD with Freesentral available.

2 Nov 2009:
Yate 2.1 launched. Can replace a Cisco PGW2200 to control a Cisco AS54xx.

6 Aug 2008:
Yate and OpenSIPS (former OpenSER) join to build IP based clusters.

4 Aug 2008:
Yate 2 launched.

10 Jul 2008:
Yate presentation in Germany.

Feb 2008:
Yate 2.0.0 alpha 2 released. New routing module allows sending ENUM routed or forked calls to numbers of registered phones. More...

21 Jan 2008:
Yate 2 alpha released. Major changes, new ISDN, SS7 and MGCP stack. Added analogic and RBS support.

3 September:
Yate 1.3 released. Minor fixes and improvments mainly in client and SIP.

14 August:
Yate based ISDN passive recording system released by Trisys.

16 April:
Yate 1.2 released. Added Jingle and XML support, PBX improved.

25 September:
YateAdmin 1 released.

25 September:
Yate 1.1 released. Fallback routing from a database, fax support in Linux and bug fixes. Changelog and Download availables.

11 July 2006:
O'Reilly published an article about prototyping telephony applications with Yate and Python.

10 July 2006:
Yate 1 released. Includes YIAX, YSIP, YRTP and many new features.

June 1st 2006:
New Yate website launched


EditHistoryBacklinksRecent ChangesSearch