FreeSWITCH LCR Data for

While I was bored and still on the lookout for jobs, I decided to embark on the task of building a Least Cost Routing database for FreeSWTICH’s mod_lcr module. This database I built is meant for use with (also known as fongo)

The completed SQL database can be downloaded from here:

Some notes before you start using this database:

  • Data may not be complete
  • By default the carrier id is set to 1, but you can change all of this.

If I feel like it, I may provide an user interface so you can customize your Carrier ID and provide a more real-time like LCR SQL database. This should work on PostgreSQL and MySQL installations as the database linked is just a bunch of inserts. I’ll probably edit this post later for my rationale on why I created such database.


Here’s my rationale for creating a LCR database: Having to build a dialplan to match a huge list of “Free Calling Areas” provided by can get daunting. Somebody by the name Jake on the FreePhoneLine forums did, and it didn’t look pretty once it gets integrated with the dialplan. To see what he came up with, look here. It does not look pretty AT ALL. Besides, it isn’t all that scalable when there are either new free calling areas being added or removed in the dialplan. Sure creating a huge list is just fine for a provider or two, but what if you have multiple VoIP providers at your fingertips?

Enter FreeSWITCH’s mod_lcr. Provided you know what you’re doing with this module, you can now dynamically route your calls via a database depending on the numbers using the LCR interface provided by FreeSWTICH. What does this mean to the average user? It means that now you can effectively route calls to free calling areas in and use other routes for calls that are not covered by them for free. Your other routes could be, Flowroute, or any endpoint you can interface with FreeSWITCH as a matter of fact. Heck if you do own a traditional TDM voice link, you could use that as a fall back link if necessary!

The huge benefit of using mod_lcr to route calls is you can now remove and add routes via a database management frontend such as PhpMyAdmin or PhpPgAdmin (Depending on what database you choose to interface FreeSWITCH) without having the need to gain access to the FreeSWITCH console and refreshing the XML configuration in there. Routes added or removed using those database management frontends mentioned above take effect almost immediately as the calls are dynamically routed when the LCR module is used to route such calls.

So I hope you choose your poison carefully. Really 😛