 Can you get metrics from a complex measure, quite like Jeter and Aco or things like this? I have like 1 minute, 5 seconds or if you need to discuss more please outside because we get closer to the end and then we don't do a delay. First we make a bomb-wise analysis and a massive metric of final product. No. Sorry, I need to give it back. Thank you for the help. I did the restarting. Maybe it doesn't feel the monitor. Yeah. Just hold on, maybe I need to restart because sometimes it helps. Oh. I think Manjaro is too much for his left eye. Hi, I'm Salvo. Teo. Nice to meet you too. It doesn't happen on Windows, right? Yeah. There we go. I told you, if you... Booting lane or something. Yeah. It's Manjaro. One, two, three, four, five, six, seven, eight. This one? You can't hear it, but it's very loud. Wait, I'll take a picture. I can't see it. What? Yeah, but why doesn't it appear on this one? Because it doesn't appear on the monitor. It doesn't appear on the monitor. It's not on the monitor. Is it... Yeah? Okay, we are ready to start. Have your seats and not to get more delays. We are already one, two minutes over. Please. Hello, everyone. My name is Teofil Vavaziano. It's my first peak, so I'm a bit nervous, and please take me easy. Thank you. Thank you very much. This topic, it's about the fraud mitigation using traffic pattern monitoring with CG rates. Fancy title, what can I say? About me. I start at a software developer at ITC SCOM, company that offering VoIP and billing platform implementation since... Sorry, I said it's my first time. I remain without Airbnb. Since 2007, we focusing exclusively on CG rates. I finished my... I taking my bachelor degree in computer science, and after that I joined the master program Big Data. That's my life in a nutshell, I can say. Now, who knows about CG rates? So, who heard about CG rates? Quite a lot of people. CG rates is a real-time enterprise billing suite. It's a fancy title also, but it's like plug and play. That's what CG rates is. It's an open-source software. Full-source are available on GitHub. They don't have private ads in repository. Everything we want to be full transparent. So, you can see the issues, the code. It's entirely free. So, we have a strong and vibrant community behind. So, they help a lot. If, I don't know, let's say we by mistake and made the commit and something's break, the community report, I don't know, let's two or three hours, something like this, and we change, fix it, and that's all. It's performance-oriented. We have our built-in cache system. The primary reason for this is that we want to be fast, like very fast. Imagine that you're querying the database for an object or something. This query can take a bit. Let's say one second. And you get, with the cache system, it's like in a few milliseconds, maybe none a millisecond. It's very, very fast. You don't have the time to start number or you have the result. In my opinion, the most important thing is test-driven development. Have more than 5K test as a part of the build system. We have three types of tests. Unit testing covers the most of code, like, I don't know, conversion function or something. We have integration test and we have call test. We take the calls and simulate how it goes. CG rates also have a modular architecture. Everything has an API, so just take the CG rates and you will find an API for everything. Maybe one percent don't have, but if you open a future guest on GitHub, we can make it. It's easy. I won't talk so much about future reach, just focusing on a few. The main, it's online and offline charging system. So cover both. Multitenancy from day one. Rating engine with derived charging. This means that you can take the CDR and derive as many times as you want. For example, I get a CDR and I want to rate with different rating plans three times or with different four rating plans or, I don't know, just how you configure. Session or event charging with balanced reservation and refunds. This applies in prepaid mode. So let's say that you set a debit interval for an account for 20 seconds. We take the amount from the balance for 20 seconds and if the call ends faster than, we will find the increments. So the balance won't be lost. CDR logging. Throw detection with automatic mitigation. We'll talk immediately. LCR with QS bundles, call statistic, diameter, radius server with process templates. Standard agnostic. That means you can define your own templates for diameter. So you get a request, you create your templates. How the event will arrive in CG rates and how we'll be sent next. And it's compatible with any standard. So you have full control about what's came in and what's go out. Resource allocation controller. Building high availability and dynamic partitioning support. Agile in developing a future. That's how CG rates evolve through the years. Now you can see in the first picture, the evolution in years, in the middle picture, the activity. Earlier I said that CG rates have a modular architecture. That means in CG rates everything is structured in subsystem. The subsystem can be stand alone. So you can use for everything. And outside the CG rates. Most of the code for them was written. And now we are focusing on fine tuning to increase the speed. I don't know. Fine tuning, you know. And in the right picture, the community. Don't exist a day without a commit. In every day we made a commit, made a change. That's, it's a schema, let's say, about subsystem. Down we have the agents. The agents are like small things that communicate with sessions. And from there, the session happens all the magic. In sessions, create the CDR, refund the increments, all. The agent, talk with the session. And from there, the session send the CDR to CDR server. CDR server can receive CDRs, from session, but only from files. Or from, I don't know, anything you want. After that, you can online exports. Again, for prepaid, after a call end, you just export to somewhere you configure. Or you can store. Or you can send to other subsystem to make other procedures. Like go to stats, calculate some metrics. From there, go to threshold. And, you know, something like this. Now about the fancy title, proud mitigation. Accounting or account service has two methods to handle this. First is action trigger. And the second is threshold. Action trigger is a bit older and soon will be deprecated in favor of threshold. Action trigger is still built-in, so balance operation cannot avoid it. Proud mitigation for resource, for stats CDR for sessions. For all these, you just have to create a connection from resource to threshold. And there you have the proud detection. Now, a bit about threshold service. Like I said earlier, it's a standalone subsystem. It can be used outside of Siege Ray Scope. You can connect internally. You just made a connection as said that it's internal or remotely. It's performance oriented and using filter as accepted list. Some of the advanced functionality, multiple filters, types. These filters are, how to say, are centered. So every subsystem use this. So if you understand a filter for threshold, you understand the filter for each subsystem. Whew, breathe a bit. About the next one, we'll talk about in one, two minutes where I will show you an example of an AP. AP call and how we can set a threshold. Action executed on match. A threshold can execute multiple action. So, for example, let's say you want to be informed about if an account was closed and closed that account. Or you want to, I don't know, receive a CDR and do stuff with them so it can support multiple action. Here, we have an example of API call where we set a threshold profile. The first two, tenant and ID are used to make a unique key. So like a unique identifier for the threshold. So we can have duplicates. So the combination of tenant and ID must be unique. Second, the third, the filter IDs. It says it has two filter. First filter is of type string. The field name is balance ID and the value is default. Just a bit. This one. Okay, so the filter says it's string balance ID default. So the filter will check the event, will check for the field balance ID and will take the value and will compare the value in our case meta default with the value that we put in filter, meta default. And it's a match. The next filter says it's a meta GT, greater than. Will take the value of units and will compare with the value that we are given, 12. So in our case, the value of units is 12.3, which is greater than 12. After that, activation interval. Activation interval says that you want a threshold to be active just for a period of time. One day, one month, one year, 10 years. I don't know. Depends on your max hits. Says that how many events can threshold not support the right term, but how many hits can he take? So for example, in CG rates came an event and from there we sent to threshold. So when a threshold match, we says that it was hidden. So we have max hits, mean hits. Mean hits says that how many hits take to became active. So for example, you gave a penalty. So after three penalty, your threshold became active and it will run only for two process. Mean sleep says that after a threshold was hit, go to sleep. Go and rest a bit until another take your responsibility. Blocker. If you have multiple threshold that match the same event, blocker says execute the first threshold, then stop. It's like a barrier. Weight, it's used for ordering. Imagine that we have two thresholds. Exactly the same, but the weight is different. The threshold with the bigger weight will be executed first, then the others. Like I said earlier, we can have multiple action IDs for threshold. The first action, it's used to disable an account so the account won't be active. The second is to inform. Next, we have an example of process event where this event came from stats. So you see there are metrics. And if you don't like our metrics, you can configure on your own metrics. So for example, meta, sum, Diaz account. That's a custom metric. Or meta average Diaz extra fields. That's also a customized metric. Down there, as a result, we have the idea of the threshold that was heated by the event. There is an event from account, and you can see the event has different fields. Now some use cases. For the accounting, where when monetary balance goes below 2 euro. It's like account, send an event to threshold, threshold verified and says, hey, you only have just 2 euro. So in that moment,