DSIPRouter

DigitalDaz

Administrator
Staff member
@Mack Hendricks I see the profile post about the following:

https://github.com/dopensource/dsiprouter

Could you please explain what it does a little, for example I see a picture that shows multiple PBX how does this work?

I know FusionPBX in a multiserver environment creates challenges that I have yet to see solved, any work in this direction is great to see.

Apart from standing in front of FusionPBX what does it actually do? For example act as registrar etc??
 

EasyBB

Active Member
From what I can gather this is a front end to Kamilio, just like FusionPBX to FreeSWITCH. Same as you, I am also curious to know a little bit more what it can do.
 
Hey @DigitalDaz ,

So, we are basically trying to make it easier for people to leverage Kamailio for 2 main use cases:
  • SIP Trunking services: Provide SIP Trunking services to customers that have an on-premise PBX such as FreePBX, FusionPBX, Avaya, etc
  • Hosted PBX services: Proxy SIP Endpoint requests to a multi-tenant PBX such as FusionPBX or single-tenant such as FreePBX. We have an integration with FusionPBX that make this really easy and scalable!
In regards to FusionPBX, it just makes it super easy to start routing calls to different FusionPBX servers, which have one or more domains. dSIPRouter will sync the domain information from FusionPBX and dynamically route calls to the correct FusionPBX instance. This short Youtube video will show how it works:
 

DigitalDaz

Administrator
Staff member
@Mack Hendricks Certainly the problems we have seen with a standard kamailio etc with any form of load balancing is things like attended transfer, parking etc. For example, call is parked on media serverA, you go to pick up the call and call is sent to be picked up by the dispatcher from media serverB etc.

Also, without digging too deep, fusionpbx makes extensive use of memcache so any changes need to be reflected on all servers.
 
@DigitalDaz The first phase was to make domain routing very simple. The next phase is to jump into load balancing and work through the issues you mentioned. I'm looking for a set of use cases. It sounds like attend transfer and parking are good ones to start with.
 
Thank you @Mack Hendricks and your team for creating this, and @DigitalDaz for sharing.

I've been experimenting with dSIPRouter in my lab and ran into a minor snag during install. It appears Python 3 is required (and I thought Debian 8.x installed it by default, according to some Googling I did, but it did not in my case) - should it be added to the list of requirements? Or perhaps this is the line where user knowledge is expected to bridge that gap.

Edit: turns out I didn't have curl installed, which prevented Python 3.x from being installed during the install script (and also caused EXTERNAL_IP to not be set properly.) Maybe the installation of curl should be added to the script, or throw an error if not detected etc?
 
Last edited:
Good catch @hailthemelody! So, the goal was to have the latest release install Python if it wasn't already installed. But, we left in the logic that would check if Python was installed before the installer started. Hence, making a user install Python before the install. We will fix this and a few other bugs and put out a maintenance release.

Thanks!
 
Looking forward to seeing the new release, @Mack Hendricks ! I have a question, though if it's preferred I can use another venue/site.

Would the following configuration currently be possible with dsiprouter? Each user agent would connect to a specific domain, handled by one of the pbx's:

[user agent (phone) 1 / ua2 / ua3 / etc] (behind client router / nat, presumably)
|
[internet]
|
[dsiprouter] (connected to private network in DC)
|
[pbx1 / pbx2 / pbx3 etc] (within private network in DC)


If so, how would provisioning work?

Edit: @Mack Hendricks , just saw that you posted something regarding this two days ago on GitHub. Posting here for others to see (https://github.com/dOpensource/dsiprouter/issues/26)

Thank you
 
Last edited:
@hailthemelody I installed dSIPRouter on a fresh debian 8.9 install on a VM in my office and I ran into the issue of curl not being installed. So, I created an issue for it and I will fix it: https://github.com/dOpensource/dsiprouter/issues/27

I never ran into this before because I spin up instances of Debian using Digital Ocean and their base install must have curl already installed. I will update the prerequisites in the README until I get it fixed
 
Looking forward to seeing the new release, @Mack Hendricks ! I have a question, though if it's preferred I can use another venue/site.

Would the following configuration currently be possible with dsiprouter? Each user agent would connect to a specific domain, handled by one of the pbx's:

[user agent (phone) 1 / ua2 / ua3 / etc] (behind client router / nat, presumably)
|
[internet]
|
[dsiprouter] (connected to private network in DC)
|
[pbx1 / pbx2 / pbx3 etc] (within private network in DC)


If so, how would provisioning work?

Edit: @Mack Hendricks , just saw that you posted something regarding this two days ago on GitHub. Posting here for others to see (https://github.com/dOpensource/dsiprouter/issues/26)

Thank you
So, this is a priority feature that we need also need. I will mark this for the 0.40 release, which I'm pushing for the first of the year. But, I can backport it to the master trunk when it's ready