Distributed VoIP Platforms

Video thumbnail (Frame 0) Video thumbnail (Frame 2195) Video thumbnail (Frame 4381) Video thumbnail (Frame 5697) Video thumbnail (Frame 6801) Video thumbnail (Frame 8427) Video thumbnail (Frame 9312) Video thumbnail (Frame 13611) Video thumbnail (Frame 14521) Video thumbnail (Frame 14955) Video thumbnail (Frame 15843) Video thumbnail (Frame 16956) Video thumbnail (Frame 18838) Video thumbnail (Frame 20522) Video thumbnail (Frame 21386) Video thumbnail (Frame 21821) Video thumbnail (Frame 22308) Video thumbnail (Frame 23041) Video thumbnail (Frame 24394)
Video in TIB AV-Portal: Distributed VoIP Platforms

Formal Metadata

Distributed VoIP Platforms
OpenSIPS at the core of a distributed and fully redundant VoIP platform
Title of Series
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Release Date

Content Metadata

Subject Area
As any other production environments, in order to maximize availability, VoIP platforms have to be fault tolerant. This presentation focuses on solving the various VoIP distribution and replication issues by using the latest additions in the OpenSIPS SIP Proxy. OpenSIPS (Open SIP Server) is a mature Open Source implementation of a SIP server. As a SIP proxy/router, is the core component of any SIP-based VoIP solution. With a very flexible and customizable routing engine, OpenSIPS unifies voice, video, IM and presence services in a highly efficient way, thanks to its scalable (modular) design. When talking about a large number of customers / calls, using a distributed architecture is a natural way to go. First, you would want to cover the entire map in order to provide the best quality everywhere to the customers. Secondly, you would want to have multiple points of presence in order to be able to spread the load from the global pool of customers. Last but not least, redundancy is a mandatory requirement for any VoIP platform, both within the same Point of Presence, and also at a geographically distributed level. The latest additions in OpenSIPS make it an excellent choice for the core server of a distributed and highly available VoIP platform. OpenSIPS has support for a large variety of NoSQL backends that can be used to share data between different OpenSIPS instances ( MongoDB, Cassandra, CouchBase ). Furthermore, several mechanisms are in place that allow for real-time call information replication between two or more OpenSIPS servers, allowing for hot backups to be deployed, which ensure instant call recovery in case of failures, with 0 down time
Open source View (database) System call Theory Subset Type theory Database normalization Computer animation Software Term (mathematics) Single-precision floating-point format Cuboid Summierbarkeit Computing platform
State observer Existence Server (computing) Open source State of matter Virtual machine Open set Mereology Number Session Initiation Protocol Frequency Web service Bit rate Term (mathematics) Hypermedia Single-precision floating-point format Cuboid Endliche Modelltheorie Data structure Proxy server Multiplication Moment (mathematics) System call Entire function Type theory Database normalization Process (computing) Computer animation Software Order (biology) Data center Quicksort
Point (geometry) State observer Server (computing) Run time (program lifecycle phase) Concurrency (computer science) State of matter Image registration Number Web service Single-precision floating-point format Duality (mathematics) Computer architecture Multiplication Distribution (mathematics) Information Weight System call Type theory Computer animation Telecommunication Order (biology) Data center Cycle (graph theory) Object (grammar) Communications protocol
Noise (electronics) Standard deviation Casting (performing arts) Computer animation Query language Proxy server Computer programming Active contour model
Point (geometry) Link (knot theory) State of matter Decision theory Multiplication sign Set (mathematics) Mereology Regular graph Portable communications device Front and back ends Power (physics) Formal language Mathematics Web service Latent heat Software testing Software framework Lie group Endliche Modelltheorie Stochastic kernel estimation Proxy server Computing platform Computer architecture Social class Module (mathematics) Scripting language Multiplication Information Database Volume (thermodynamics) Line (geometry) Instance (computer science) Benchmark Message passing Database normalization Computer animation Personal digital assistant Query language Uniformer Raum Telecommunication Order (biology) Right angle Family
Pattern recognition Group action Computer animation
Server (computing) Computer animation Semiconductor memory Synchronization Database System call Row (database)
Server (computing) Interface (computing) Binary code Virtual machine Database Cartesian coordinate system Food energy System call Type theory Web service Computer animation Average Mixed reality Physical system Row (database)
Point (geometry) Dataflow Server (computing) Backup Multiplication Inheritance (object-oriented programming) State of matter Interface (computing) Software developer Multiplication sign Binary code Real-time operating system Database transaction Image registration Distance System call Computer animation Telecommunication Configuration space
Word Computer animation Multiplication sign Adaptive behavior Normal (geometry) Energy level Table (information)
Digital electronics Computer animation Information Synchronization Energy level Replication (computing) Social class
Multiplication Computer animation Multiplication sign Direction (geometry) Moment (mathematics) Order (biology) High availability Instance (computer science) Protein Arithmetic progression Proxy server
Point (geometry) Dataflow Addition Server (computing) View (database) Virtual machine Canonical ensemble Mereology Web service Process (computing) Software Hypermedia Term (mathematics) Lipschitz-Stetigkeit Musical ensemble Monster group Reading (process) Directed graph
so we go on with a view to the topic is of that but you know we speak about distributed theory the that frost that's blossom half of you who are in the develop I don't know talking about how to build some distributed platforms single steps how we things what approaches you took along the way how we think some issues all of it using OpenCyc and a couple of other open-source tools are there in the wild 1st of all is to go look at how the current status of most of the work with platforms and the which software around it so often the most everything is most likely a single steps serious so you're only getting capabilities for operating a single subset obviously there there are some ways to achieve redundancy various types of and others like with the active back cover some of which are like the software either via a B or heartbeat but overall it at the end of the day limited in terms of how many subscribers it includes because Johnson box and how many calls per 2nd or concurrent calls you can put a 1 there and even flexing a running sum up performance piece of software Michael concepts there are still some reasons why you would like to put that many things on a single box here
are a couple of them for well 1st of all you would like to have a single box because of geographical reasons most likely was users are spread across the globe they're not every everybody's not from the same country obviously and you want cover the entire lab in order to provide a better voice quality to everyone so don't streaming media from Europe to Asia to die states and sort the for the moment they even if you have to suffer from the period where you would like to put all that traffic on the same box you prefer to go to balance it across multiple machines in order to be better resistance of types of bursts of traffic or if you will for it the whatever reasons you want to call also machines and some mom contains 4 or so with other really matter if you can do it on machine it's a matter of you know 1 of them is India also redundancy has mentions solutions of active but redundancy our all over the place but having a up terms of in terms of a data center redundancy is also rate is what happens if you invited to something that don't lose having the ability to provide a service to the users so this is the those are the issues were really trying to solve and here's a short of of what would be going through 1st of
all for those to form might have no it open sets is an open source observer it's highly flexible and you have lots of models to choose to to build whatever sit infrastructure you want and also it is highly scalable it can handle up to 20 thousand calls per 2nd and of pericles begin genes assigned numbers because again we we're a SIP server will have injures the signaling part there is no media flowing in or out of the steps and because of these you can use it for various scenarios like as deceased trunking Mariscal sentence types ministrations proxies whatever so you can use a process to either build your soup of structure of the from 0 invisible to move together various parts of Europe already existent city network so just a short novel and
this would be like a much better architecture that we should strive for like to have multiple points of presence across the world and we within each point to present the data center that have 2 or more hopeless observers that would be able to work to have the traffic in this way we can handle both the failure of a single several also handling the fear 1 more data centers and of course you would need to have some way of communication between all of these points of presence because in end of providing a single services service to your users so you want to synchronize various
information so or objective objective is to have multiple points of presence which and you distributed that act as a whole by assuring multiple types of information 1st we have internal info which is kind of stuff related to the actual state protocol like ongoing calls registrations whether a cycle in there is the type of runtime information that helps you while you are rocking your user schools like whether the user has enough traffic for you to accept the call whether the user has become exhausted the number of concurrent channels that you have allocated to him and so on so there is a very real need for us to be able to share all kinds of these data are in a dual distribution weight and we decided not to reinvent the wheel for this and we decided to make use of various no SQL engines in order to link everything together and obviously this is was not such an easy thing to do because of things on show for 1st of
all there are lots of noise solutions and obviously there is no standard query language for them so we have to implement various connectors for all of them so right now we support that this young cast aside from deviant countries but also we need since we lacked some standard query language we try to make an uniformly DI for things that are very commonly used in a while you are writing a routing strips for example you 1 fetch Keeling looking from the actual sharing engine or for example buzzing with programming
love of contours how much further do you have to count how many were imposing habits account so we also expose that to this uniform CBI so what we you have
now is you can write your scripts in 1 single way no matter what ingenuity using where it's Manchester Sunderland be and so on so this helps in portability and also it can help you would say you cannot make a mark which is better for your particular use case decided on would be no issue right of opposite strand benchmark it in your lab against the song along with the but using the same tests testing finger this a strict I form of it since the support so many I know a skill and each of them has it's good parts so you will you don't want to be limited to this simple set of uniform India so we also supported the role of specific queries for each of the back ends which again gives you a full will have access to the full capabilities of the actual engine so this was cool lies but we also have lots of issues like what happens through power would help to you what was it uses out there that I have already deployed at the platforms and are currently using just a regular SQL database or how do we make sure that all of those distributed points of presence have access to the same but provisioning information which for most of the persist modules was the was red from a regular SQL database so in order to do this we wrote a simple SQL to lost still converges currently is just from what would be worse than brothers for precise run which basically means that we can leave all those modules that are operating database are in place don't change anything either on the scripts that the user has European powers of the volume modules and this framework that will automatically transferred from regular SQL to the language that would be uh understand that demonstrates similar language so this is very powerful because if the matter like you are running the messaging service and how users if they're flying will be able to read that when they come back on line delivered to read a message which you'll give to them from regularized kernel database well if you're going distributed probably in you have to drop that's my Scuola at some time or another have you can just plug in what would be plus run it up and change URL will discovered a model that fits the user can I send a message the US and the destination give decision is contributed from Europe with 0 changes from your part so
basically we now reached an architecture like this we can have multiple points of presence again have are multiple sepsis instances running and the communication sharing of all these is called states in 20 states or whatever it is that 1 this newest Northfield classes which links will will link all or parts still things were not a perfect and say we encounter some issues actually within the same path when it comes to achieving hot redundancy goes stadium that's happening so can
groups when the happens and our recognition goes down we would like to
come but have to be able to switch as fast as possible to the back and the let's see why this wasn't possible until now or
was not very scalable how things were running before is that we were using the regular database for storing the dialog
obviously for persistency and failing his
and how it works how obviously usually what you had was an atom and its back up there which share the floating world join the and the active server processing the traffic will also make sure to keep the database in sync with with its internal memory so this what call started it will go and write the call records in the database when it ended it could that will ultimately be
molded from and when you know the main surveillance you could just go to the active server in this which is the new active sorry and right the of the system and the energy to be saying which will go ahead global dialog from the database and kids should work well this approach is floors for 2 main reasons 1st of all if your dependent depending on the type of traffic and you're having if you're having highest calls per 2nd and Lol a call duration you will end up stressing that database and eventually it will become a bottleneck in a system secondly what happens if we have 1 million
from the calls the the server face while obviously if you if you follow the scenario the and the service which lacked will run that command and we'll try to load 1 million records from the database which no matter what the status of running on is modeled its entire even this is enough to to make it so that's you have low those from database there are no longer there because usually the let's say from calls have average of 1 2 or itself so you have most likely ended up at start holes and even worse in those users were enough equals they were on the Babel speed you will keep heating up the credit and it's darker there will be no no idea still a tyrannical the cold for you so we the conclusion that for a large deployments where we were processing a significant amount of traffic for a single machine we some real-time applications you know want to rely on the database for synchronizing machines which was kind of lucky for us so we know this binary inter interface which is
going to introduced in opposite from point then the parent released and it's this is meant to be a fast and efficient communication channel between flow 2 or multiple passage distances and the this interface is really about the diagnostic so it doesn't care what your supervising between them so far and using it to synchronize the states registrations transactions but it's up to the developer to implement whatever the guidance to replicate in real time so how this works is basically when the user does the phone it to the whole the related calling analytical pick some to fall of the active current active and wire binary interface will turn to the backup server that the dialog has established the and I let's say that later you on some of them you want to so maintain so something on the backup server and you would just switch of floating maybe 10 when the use of terror is the call the now active sampling reactive server will
tell you all backup server that that don't have needed suggesting that I all the time they would be perfectly innocent and not relying on anything else configuration is very
simple you would just still only a double precision which interface to listen to and as you will also have to tell him to accept a ticket dialogs from 1 or other of the by obviously you have to wipe a table that's on that firstly the norms of the new facts and then he will tell this printable
subsistence where 2 replicates the dialogs that it is currently processing and you can set this up on this last parietal multiple times depending on your particular scenario that say you want to have active active like adaptive word level
you will tell the teacher possessor replicate information to each other you or if you have like 2 where there's a 1 mark up you can also do that so it's up to you how you however there is so obviously now the thing that impressed circuit of kept perfectly in sync and you can use this to replicate basically
anything so these are the conclusions we can now be easy due distributors and offered the same level performance of 2 classes as coming known for was the sole want to pursue it thank you do also other solutions then
you're using to the proxy I know this is some work in progress that we're thinking about to be able to use that the protein order to have the instance failover for for it but at the moment they are completely decoupled so this is just the opposite with the questioning of all the so how do you manage in your high high-availability sit on uses the featuring issuer has only 2 nodes how do you manage to the over to be sure that there are multiples working at the same time the user some educators solutions presents your talk about the 2nd it's the effective but I
achievement to get you to you what do you want yeah well there occupations out there like we are at the heart of the that direction that ensuring that
our have there is only 1 of the active server but it depends on the initial point of view have active active effective service that will lead to keep 1 we're going think that is is is the undeserved could terms that's this user monster on users who don't whole hallways manages users switch from 1 must amount to use you the machines are talking between them so they intuitively have problems figuring but it within your same network this this at the very least reading if you the review all sorry no wasn't user really wants to to Zeuthen seems devices Honolulu stuff so when 1 thinks of the lips which she gets to warm up to the user and the job clues is yes is this spectral switching of giving the the VAD on of a single machine is not handle directed by a process of addition is an external resource soft software that is dedicated for this so basically you only have to trigger a consistent with the direct hanging around active the actual switching over to it these that everything else about handled directly by by its but as soon as thank you and what about the end of the cold canonicity compatible will buddhist presence I gave it sorry about that I want to follow here let's say that I have a lot of the new 1 Collins pleasant and I will listen to thinking about the this and in other places you can I of well again we are talking about the media he yeah that elicits it's is just evolves signaling you can into the policies to tell our 2 instructed to which a part of the processing will be used for a particular cold sink use it to manipulate where they are to the flow will go through if there is if you're trying to prioritize some rocks and limits the of the band for a specific roles for the entropy but nothing more so we you can begin thank you for much thank you for your good and then there's a career