Build your own ENUM server using CGRateS
This is a modal window.
Das Video konnte nicht geladen werden, da entweder ein Server- oder Netzwerkfehler auftrat oder das Format nicht unterstützt wird.
Formale Metadaten
Titel |
| |
Serientitel | ||
Anzahl der Teile | ||
Autor | ||
Lizenz | CC-Namensnennung 2.0 Belgien: Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen. | |
Identifikatoren | 10.5446/47457 (DOI) | |
Herausgeber | ||
Erscheinungsjahr | ||
Sprache |
Inhaltliche Metadaten
Fachgebiet | ||
Genre | ||
Abstract |
|
00:00
Gebäude <Mathematik>ServerENUMMultiplikationsoperatorZweiQuick-SortRechter WinkelBitrateSystemplattformInternetworkingComputeranimation
00:24
Gebäude <Mathematik>ENUMQuellcodeOpen SourceSoftwareentwicklerPlastikkarteSpeicherabzug
00:38
Suite <Programmpaket>UnternehmensarchitekturSoftwareGebäude <Mathematik>ENUMTest-First-AnsatzQuellcodeKalkülOpen Source
00:55
Modul <Datentyp>Gebäude <Mathematik>ENUMIntelKonvexe HülleMathematische LogikPhysikalisches SystemBitrateElektronische PublikationFunktionalMultiplikationsoperatorKonfigurationsraumAdressraum
01:20
Direkte numerische SimulationKommunikationsprotokollTemplateVerschlingungGebäude <Mathematik>ENUMRPCKontextbezogenes SystemServerSinusfunktionENUMDirekte numerische SimulationDatenfeldAttributierte GrammatikKonfigurationsraumTemplate
02:07
SpeicherabzugMathematische LogikVektorrechnungFunktion <Mathematik>MaßerweiterungENUMGebäude <Mathematik>BenutzeroberflächeProfil <Aerodynamik>ZahlenbereichGruppenoperationMereologieDifferenteSoftwareDrei
03:21
Gebäude <Mathematik>ENUMIntelCoprozessorStichprobeNichtlineares ZuordnungsproblemEreignishorizontAttributierte GrammatikObjekt <Kategorie>DatenfeldPunktBitrateStichprobenumfangGüte der AnpassungFahne <Mathematik>Mobiles EndgerätZahlenbereichKonfigurationsraumTermHypermediaFunktionalGewicht <Ausgleichsrechnung>Befehl <Informatik>Exogene VariableOrdnung <Mathematik>ClientGeradeFormation <Mathematik>TemplateAdressraumDateiformatDatensatzDirekte numerische SimulationRegulärer Ausdruck <Textverarbeitung>CoprozessorÄußere Algebra eines ModulsZeiger <Informatik>Profil <Aerodynamik>TypentheorieZweiENUMMapping <Computergraphik>Abfrage
07:44
StichprobeServerGebäude <Mathematik>ENUMWeb SiteCodeGruppenkeimServerMathematische LogikProzess <Informatik>Direkte numerische SimulationPhysikalisches SystemENUMExogene VariableDatensatzDatenfeldZusammenhängender GraphClientRoutingBitrateSchnittmengeZahlenbereichForcingCASE <Informatik>InformationRechter WinkelZentralisatorGruppenoperationEinfügungsdämpfungFahne <Mathematik>Workstation <Musikinstrument>Gesetz <Physik>SoftwareSystemaufruf
12:17
PunktwolkeOpen Source
Transkript: English(automatisch erzeugt)
00:05
All right, so our next speaker Theofil here is his second time speaking, so we need some encouragement applause, please, guys. There we go, there we go. Thank you, thank you, guys. And he's going to tell us how to build an Internet platform with CGRates. Take it away.
00:25
Hello, guys. My name is Theofil, and I'm a CGRates core developer. Now you may ask yourself why you should be interested in CGRates. And here are just a few things about it.
00:41
The first, it's open source. It means it's entirely free. Both the source codes and the issues are on GitHub. The second is test-driven development. It has more than 7,000 tests. And advanced functionality can be achieved quite easily.
01:03
You don't need to think about for what do you want to use CGRates. And the second, you need to think about logic when you build the system, when you integrate. Because we don't have much time, I will speak about the DNS agent.
01:26
The enum can be achieved in CGRates via the DNS agent. The DNS agent can be configured in the configuration file. You just need to enable it and make the templates to build your request.
01:44
Now some subsystems involved together with DNS. The attributes, what do you need to remember about attributes? Is that attributes can add field, can modify field, and can remove field from the request.
02:07
The next subsystem involved is suppliers. Here I want to say the difference between the supplier profile and the suppliers inside it.
02:21
Because the new users and even the old users make some confusion. So for example, let's say you have a network across the Europe. And in Belgium you have three suppliers, in France you have four, in Germany five, and so on. And you want to group the suppliers by the country.
02:43
So when you build, you will build in the following way. You will build a profile for the Belgium and inside that supplier profile you will have the supplier Belgium number A, supplier Belgium number B, and supplier Belgium number three.
03:05
And basically it depends how you want to group them. You want to group on the part of Europe, you will have a profile for that part of Europe, and inside that profile the suppliers, the actual suppliers.
03:23
As I said, the enum in CD rates can be achieved via DNS agent. The DNS client sends the request to CD rates and the DNS agent receives it in the NAPTR format.
03:43
From that format, based on the templates, we convert into CDR request. After that, we take the request, we send to session, and based on the flags you have configured, the request will be processed and again sent back to the DNS agent.
04:02
The DNS agent will receive the reply after processing and we build the NAPTR replies and send back to the client. Some use cases, sample number mapping via attributes, number portability again via attributes, and LCR functionality via suppliers.
04:26
Now here we have an example of how the request in NAPTR format arrive in CD rates. We can see there we have the response on false and the answer has a nil value.
04:41
This means it hasn't been populated yet. As I said earlier, you need to configure DNS in the configuration file. Here are a sample of the request processor and we have a filter for that.
05:01
We have a filter for the query type to be NAPTR and for E164 address. And the flags said how to process this record. First, we have the out. This means the request will be sent to the session and in session it will be done authorization.
05:26
Also, we have the attributes flags. It means the session, before start to actually authorize it, will send first to attributes. From there, it will replace some fields or remove or modify some fields and I put there a log to also show in syslog how the request is.
05:53
In the request fields, we have the actual fields that will be built when we construct the CGR request.
06:03
So, you see there at path, meta, CGR, RAQ. In CGR request, we will have a field called E164 address and this will have a value, a constant, valid for the second NAPTR address.
06:26
We have a constant, but the value will be taken from attributes, from the request. Here is the request built based on the templates. You see the event has only two fields, as we specified.
06:42
And after that, this is the reply coming from session. So, you see there, because we configure attributes, the first line says attributes. It matches a profile and at alternate fields, it says what field it was modified. So, we have for NAPTR address, we have the following modifications, C ./18172.16.11.
07:11
From there, we have the reply fields when we build the reply to send back to the DNS client.
07:20
Here, we see in reply, for the order, we put the value 100. For the preference, we put the value 10. For the flags, we put OOP. And for the regex, we take the value from the attributes, from the CGR reply and add as a regex.
07:45
Here is the response that we sent back to the client. And you will see there, the response is set on true and the answer has some fields. These fields are exactly the same that I showed you earlier in the reply fields.
08:04
One thing I want to say, and before there will be questions, CGRates does only what you configure to done. So, we don't want to involve in your business logic. For some other software, you must modify your business logic to work with them,
08:24
but in CGRates, you modify the CGRates to work with your business logic.
08:41
We do have a few minutes for questions, if any. And I think we can do this now. So, what is your one feature that you would like to add or you plan to add in the future and you haven't presented yet?
09:03
We don't know exactly, because now we let the user to make his own logic. First, for example, for the CDRC, when you import the CDRC, we store the CDR.
09:24
And we think more about this thing. And, of course, for 10 CDRs, it's not a problem, because you store 10 more CDRs. But for a million CDRs, you store all of them. And somehow this interferes with your business logic and we remove it.
09:45
So, if you want to store the raw CDR, you will have to configure. Okay, so actually I have a question. So, it's good to see that Enum is still working after like 10 years being dead or so, or less, back in rating CDRs right now.
10:05
My question is to understand architecture. So, you are like in between DNS servers and some routing engines, or you store the full Enum records like CDR rates,
10:20
system is now the DNS server for some routing engines and they fetch from you the best route based on cost or whatever. You mean for the LCR functionality, right? You rely on Enum here, right? Enum is practically DNS record.
10:43
Yes, DNS record. I'm trying to understand where is the CDRates as component here. It's now entirely the DNS server for… Yes, yes, CDRates is entirely the DNS server via the DNS agent. So, the client, the DNS client sends the request to us, the DNS agent will receive, will send, it will build the CDRates request, will send
11:12
to session, session will process based on flags, how I showed you earlier, and from there session send back the request process to the DNS agent.
11:23
The DNS agent will populate the answer fields and it will send back to the DNS client. Any questions or I can make another one? Knowing that DNS is typically blocking and people avoid it, do you do caching? Yes, only if it was configured to do caching.
11:45
Again, we let the users to decide… If you support caching, it's the right question. Any other questions? Enum, Numbers, Regex, DNS, everyone loves? Regarding future, if you have one, you can come on GitHub and open there a future request.
12:06
Or pull request. Okay, thank you. Thank you.