 So yeah, it looks like it's time Thanks for coming on one of the last session, but at least we know that who is coming. It's interested in the topic so first few words about Myself because I'm not much into this part of the the world to put it in this way I'm living in Berlin, Germany, but I'm originally from Romania Somewhere in East Europe By education, I'm a computer science software engineer So a programmer mainly doing the C programming for the last 20 years or so from this period of my life Programming most of it is related to open source real-time communication and most of it it's What's now come a you see? Server, so I'm one of the lead developers right now and Actually the oldest active from the initial team of the project. I'll have a slide with the history The project it's used quite a lot out there We even have our own conference with about 151 70 170 people coming every year. We do it in Berlin, but I'm also participating to other events usually, it's North America and Europe Otherwise, I'm working for a seat of small consultancy company focusing only on Kamaila related services this Presentation because I was not sure about the the audience is more from user point of view But if someone is interested from my developer point of view and enhancing the application I'm available even tomorrow around here or we have a good forums out there So the plan for this presentation. It's trying to give you the least the direction on building your own Telephony service or you can call it the real-time communication because you can use it even for instant messaging or presence you can even extend it for You know image sharing and so on to make it a bit comparable with What's out there and it's popular you can build not with Kamaila only but services like Skype, WhatsApp, FaceTime You know everything that's in The market right now and used quite popular by different regions of this country But of course using open source everything from the client side to server side could be open source and more important to be open standard Because actually you can interconnect with the PSTN so the classic telephony or with mobile Networks using the same protocols of the a very efficient way of peering with you know everyone out there in the telephony world So, yeah, practically what we have In this real-time communication, I put it in three categories first will be the interaction protocol What's used between these let's say entities that are in the network for Communicating in our case and I have just Put it for reference. It's a six session initiation protocol. It's an open standard defined by the internet engineering task force, so it's a International body for the standardization of everything about the internet a lot about the protocols But it goes also beyond that It's something similar to HTTP more or less if you ever had Curiosity to look at the network what's happening so practically you have some messages going From the client to the server and then the response in the HTTP case would be mainly HTML which is a payload in the CPS will be the description of the session I want to do a video call. I want to do a audio call, you know all this kind of Interaction that you can do with the other party The same standard. It's actually adopted by the ITU and GSM a so practically see if it's used now on 4g and I think here in Singapore you don't have any more like 2g or so. So if you are having a 4g phone whenever you make a call practically, it's using the same protocol behind So actually as a matter of fact with the kind of web extensions that you can build the core network for 4g networks So the core infrastructure for 4g networks for routing such calls. They are called IMS extensions I'm not gonna talk about it, but probably you are It's another Partial open source implementation from Meta switch, but you need other components from that company Otherwise, this is the only Option if you like to start like an MVNO and you don't want to buy from guys like Eriksson and so on would be Camarillo and as a matter of fact in many countries in Africa because they don't have so much budget There are companies using and actually contributing back to Camarillo code on the IMS extension So why I want you to say here is not only about using open source for your Needs which I do also, but you can actually start a real telephony service So something that you can actually make money out of it and it's a proof market the real-time communication and it's growing The second component that I'm gonna approach here will be the server side So we have the protocol we define it. We're gonna use a C++ standard Everyone can implement either server or client side based on that protocol and now on the server side It's where I actually Act most of the time being the developer of Camarillo there are a couple of alternatives and I'm gonna also present them because Camarillo has a dedicated role in this network First a bit of history because if you search on the web You might find different names which actually are the same project overall the project started in a research institute in Berlin, Germany That's where I have this kind of logo of the city Quite also started in 2001. It was made open source in 2002 But then by 2005 because it was quite popular and the Institute made a spin-off company to take care of Commercial aspects with the project that company was bought by the character US vendor at a time Which mean one was bought by Oracle as they wanted to continue with the open source branch couple of the developers We had to fork it and we created what was for three years open ACR project. I have it in the Green branch there The CPEX was out there was open source They couldn't close it because the codos at that moment in Not get happy because didn't exist. It was very less and then source forage for a while However, this branch of an ACR became famous and we ended up in getting in sort of a travel with a trademark Issue a US company claim that we suggest its open source version of their telephony System which had a trademark ACR and by using open ACR we suggest its open source version of their product So we decided to rename Not fighting court most of the developers and community at that moment was in Europe Any I'm playing court in US. It's a lot of money just to put it short So by a developer from Austria, we got this proposal with Kamailio, which is Hawaiian word Which actually is the verb for a talking conversation So this is actually if you want to translate from English to Hawaiian, let's speak CIP. It's gonna be something like a Kamailio So looks something related domains were free no trademark. So We choose this name and from that moment we have the same Meanwhile will actually merge back with the original branch the guys at Tech Lake push some good code mainly for scalability and the foundation of the application and that the work including and over the time we practically continue as Kamailio project now a summary because Again, it's more than 15 years of development with the rather big companies involved in contribution I'm Putting here what you get with with this application more or less from the the foundation of for the time communication. So Why not be all these IPv4 IPv6, you know, don't worry if you are still on IPv4 It's working if you combine the two it's working if you want to be on IPv6 It's working as well. It has all the upper layer transport protocol support UDP TCP TLS The rather new one STP mainly used by the large carriers in the coordinator because the end devices don't support it as well as Extension for what's called now web RTC So this web socket that you can have real-time conversation between two browsers With the latest Firefox Chrome and including Apple Safari lately as well as Microsoft Edge Extensions we have In the area of Telephony voice over IP we can do or route calls that are gonna be with voice video We have this extension to integrate with the mobile network voice over LTE IMS as well as the classic Telephony CIP I-70 We have a small footprint and at some point those used on the YMAX if someone remember the technology in YMAX antennas for optimizing the Color routing path on large grid of such antennas. So it's suitable also for small Embedded devices. There are also packages for Raspberry Pi. You can just install it quickly if you want You can even bridge between the modern specs of web RTC to a classic CIP phone combining with RTP engine, which is a Project developed within Camarillo community, but it's a standalone application mainly You know for scalability as the media transmission could be a lot of traffic comparing with signaling a lot of the extensions especially for you know scalability and redundancy and high availability Please go routing Load balancing and so on. I'll have some more Details the community is quite healthy and there is no big Company behind in like controlling so the Institute still collaborates with us mainly for the event that we organize the Camarillo world But otherwise they are not involving the management of the project. It's community based But on the other hand, we have like 50 developers who would afford to pay 50 developers per year so that's even a lot for a rather big company to have 50 developers in-house For one application, of course, they don't work like daily base But they maintain the code they improve it when needed, which is very very useful now to look a bit from outside that some topology is practically when I have a session have two devices that will hear like Phones, but could be apps on the mobile. There is no problem And what I wanted to highlight you can also Intel connect with other servers because it's everything like IP based and Main routing it's Domain based or IP based and there is no problem that I'm running my own Camarillo for a CIP server And you run yours to interconnect between us. You just need to publish in your DNS The hostname and IP address and Camarillo will do The routing without the issue of course for small deployments could be a single Camarillo instance for large deployments You can have an hierarchy of like layers with a load balancer a main proxy list goes out in engine and present servers Another quite popular use case. It's like for interconnecting Telephony providers, which is more like the second part sometimes you need to do transcoding sometimes interconnect directly just to give you like Figure about the performance because we had the scalability from the first Moment of building this application you can get with a stateless load balancer around 10,000 call setups per second. So it's new calls per second that could be routed with the application and and Some people may think it's not that big, but if you think in like one Minute and a half you already processed one million calls in a single and Those are active because actually being seen and only and not dealing with media at this level We don't really care about how many active calls are so having like one million active calls in one minute and a half is not Something that you can buy cheap from the big vendors like Eriksson or Huawei and again This is all free. There is nothing that you cannot buy with Telephony typically you have some Features related to media processing like audio conferencing or announcement or Voice box voicemail a system for that you would need to use something else There are open source variants like Asterix and free switch the most popular there are few more others and Kamaila, I think it's very well we Because again, we are only Signaling processing To a server you can think of it as a seat packet router We know that the segments of a packets actually represents a void call and we deal with that in Kamaila, but again if you want to look at the basics, it's a dispatching seat packets left and right on the network Why actually said it's a framework it's because you don't get Kamaila started and now it's a telephony engine Kamaila has a Scripting routing as a configuration file. So practically you have to build something Which represents your routing logic could be a list code routing engine could be a load balancer could be a combination But practically you have to stack a couple of components together and then you get The telephony system that you want So this scripting language has two roles actually I call it like passive role which is only interpreted at the startup would be like What IP address to listen on how much memory to use how many Worker to create and so on and then we have the one Which is active at the runtime and it's about deciding the routing of the SIP packets for building this logic we have Some choices now for this scripting language initially does only something a self-abridged So customs the script language which actually is not a bad Decision because when you build it from scratch even if it's like a new programming language even a scripting language You can optimize it for your use case. So we optimize it for all this large volume of SIP traffic But then you get in some limitation at the beginning it was not that obvious because it was mainly used for the plane Telephony connecting to people making calls when everyone wants to integrate with social media or do some extra analytics and The application come a little itself. It's written in C Now writing in C is not that easy this day and there are many libraries that you could reuse But there are another scripting language it so starting with like one year and a half ago We added what we call inside come a illio the embedded interface for scripting languages Can you which allows you instead of using our native scripting language to use? Python Lua the JavaScript and a small tiny Scripting languages. I don't know how many knows it's cruel. I added it being the developer of that because looks like suitable for embedded devices the interpreter is very tiny and Could be useful in such Cases of course we have also support for like a rest API interaction. You can make a query This is the color. This is the callee through some application server You get back like a Jason saying send it to that IP address or do whatever with this call So if you are more into the API, we have plenty of options to do queries to parse Jason or xml output and so on just Slightly idea about our scripting language at the right side of the slide so practically that passive It's at the beginning then add modularity where we have to load different modules Just an example here and the active part the scripting languages is like the again basic segments of if condition matching on the type of the packets and Handling request replies from Cip server And somehow approach that you have to put a couple of components together to build something usually you have Authentication authorization because you don't want anyone to make a course through your platform But then you can go in the direction of the load balancing in the direction of a present service and so on with that you Load different extensions in Come I just have an idea because maybe not many of you are familiar with the project and also not developers What would be the component that you will have to add for a load balancer? So practically you'll have to define a group of destination. You put them in a assigned to couple of them different IDs could be a text file which is suitable for the small Deployments or could be with a database and then practically you have some route blocks that you have to put in your Configuration file would be a selection of the destination in case of failure because maybe you send to one and that box is down We have what we call failure out. So practically these two pieces of the scripting You will have to add in the routing logic. This is loading the module and setting some parameters. So not that Relevant it's easy to put it come I know it's on the end. So people think that installing now a telephony system. It's like of 3 4 5 fridges if you visited a telecom data center in the past now, it's available on Debian You can run it on your Raspberry Pi. There are Few comments the Debian has quite up to date the version of come I will just install it You can choose my skill or post this or a different database as we support more you enable some feature like Authentication storage for the user location add your users and then start come I'll you then configure the application and Like soft phones or desktop on and talk between in terms of the web interface for management in sirenis also open source is like a control panel for come I'll you adding subscriber Visualization of some statistics Otherwise come I'll you it's only the application for outing the calls However, there are couple of companies which build more like complete telephony systems, and they are also free and open source So it's why I give you here a couple of them if you search on the internet You might find others like isabel pbx and even people for API for telephony but this are more or less like distribution oriented on Starting telephony Service in like half an hour because they give you user-sided portal so they can see the calls that they did the records for accounting and so on Some of them like see provider it's oriented to the operators like kazoo. It's oriented to hosted pbx So you have a slightly different target for it in terms of usage It's we can use the worldwide even by big companies like orange or like the second telecom in Germany one-in-one So your reliability is not a question for this one I'm ending more or less with the option that you have for the client devices and applications Practically if you like to have the feeling of the phone you have to pay some money because it's hardware But I'll plant your name some more expensive like Cisco Polycom, but also cheaper Grand Street, but still good quality and Of course you can have either desktop application or mobile application Some of them open source which I listed first, but some are also free to use so sometimes It's a choice of you which one you want to use so lean phone It's available on all platforms including Windows mobile if that still exists, but I'm great the iOS And all the desktop distribution Jitsie Java, so it's running pretty much on every desktop and Then couple of options for and read as it's more open than the iOS Then is this a new web RTC? Specs that again, you don't even need to install an application on your mobile phone You just go to a website. You will get there like Maybe just an input form you want to call that number and you are gonna click and everything gets set up However as web RTC is not defining the signaling you'll have to load some Java Script libraries and I gave you the option here with the jseep jseep ml at the library city expo It's I think relying on cjse and making that the interface there so practically it's adding the GUI and on top of Java script library if you want to build your own Native application, there are some good open source CIP libraries, so you write it in cc++ your choice and that's a good Startup because they they do actually more than see if they do also media processing like pjcp and version so your choice of that and With this one, I'm Ending this for more information. You will find our website has quite good Community around it the mailing list are active good reference documentation and If you have questions and also available around Here even tomorrow now probably I have time for maybe one question or If someone has a question otherwise, I'll be around and you can ask me Yeah Okay, then thanks again for