SlideShare a Scribd company logo
1 of 34
Download to read offline
NKSIP 
THE ERLANG SIP APPLICATION SERVER 
1
What is NkSIP? 
An open-source, scalable, easy to use 
and (soon) distributed 
Erlang SIP application server 
2
A bit of background 
Emergency Coordination Centers 
3
Our’s vision 
A communications product you can use as cloud-based, on-premises 
or any combination of local/remote sites and cloud 
providers. 
The only operator’s interface for voice/data/video is the browser. The 
web application connects to any local cluster if available, or directly 
to the cloud if none is up. 
Self-healing, peace of mind, dev-ops friendly. If a node goes down 
in any of the local clusters, there is no hurry in repairing it. Even if the 
full cluster goes down, operators connect automatically to another 
one or directly to the cloud. 
The specific client application should be developed easily, in a few 
months, without special distributed programming abilities. 
4
First approach 
Distributed Erlang/OTP core 
NoSQL Database (CouchDB -> Riak) 
HTML5 client, websockets, WebRTC 
Freeswitch 
5
Erlang / OTP 
Language, environment and best practices developed 
by Ericsson from late 80s 
Building critical, highly available systems 
The secret sauce of WhatsApp, RabbitMQ, Ejabberd, 
Riak, CouchDB… 
Incredible simple (BUT functional) 
Building distributed applications is NOT, even with 
Erlang 
6
Erlang / OTP 
Lightweight concurrency 
Asynchronous communication 
Process isolation 
Continuous evolution of the system 
Errors will happen: ”Let it crash” 
7
Erlang / OTP 
APPLICATION 
SUPERVISOR 
WORKER 
8
Erlang / OTP 
APPLICATION 
SUPERVISOR 
WORKER 
NODE1 NODE2 
9
First approach 
Distributed Erlang/OTP core 
NoSQL Database (CouchDB -> Riak) 
HTML5 client, websockets, WebRTC 
Freeswitch 
10
Freeswitch was not enough 
We need SIP 
OpenSIPS, Kamailio, Mobicents… 
… they don’t really fit. 
11
Another SIP product? 
Existing products are either too complex to integrate into a 
distributed application server (Kamailio, Mobicents) or too 
high-level to fully use all SIP’s potential (Freeswitch, Asterisk). 
SIP is a very complex protocol, but most of this complexity 
has no added-value and should be hidden from the 
developer. On the other hand, SIP concepts are actually easy. 
No product clearly maps SIP concepts to the application. 
Implementing new RFCs is currently a painful process. 
SIP routing is at the very heart of any multimedia solution. 
Wouldn’t it be nice to have full control of it? 
12
NkSIP’s vision 
An open source tool to develop any kind of SIP 
application (NkAPPs), specially focused on highly 
available, distributed and scalable SIP applications. 
Each NkAPP application decides what callback functions 
to implement. Very few for a simple, standard behavior. 
Many of them for fine-tuned or low level behaviors. 
NkSIP takes care of all the details: retransmissions, 
transactions, authentication, dialogs, sessions, etc. 
All SIP applications are similar from NkSIP’s point of 
view: UACs, UASs, proxy servers, B2BUAs, SBCs, load 
testers… why a different box for each one? 
13
NkSIP’s vision 
NkSIP does NOT try to emulate a PBX. No dial plans. No 
extensions. Only pure SIP. You need to now what INVITE and BYE 
means to use NkSIP, but don't need a deep understanding of the 
details. 
Implementing new RFCs should be easy and natural. NkSIP offers 
a rock solid core, written from scratch core to develop distributed, 
highly available and scalable systems. It has a hierarchical plug-in 
system to develop new functionality without having to modify the 
core or other base plugins. 
The Erlang ecosystem is the perfect fit for this kind of product. You 
can run any number of SIP applications on a NkSIP cluster, using 
Erlang but (soon) also using Javascript, Lua, Java, or any other 
language capable of receiving a JSON over a socket connection. 
14
Current features 
Full support for all defined SIP methods: PRACK, INFO, 
UPDATE, SUBSCRIBE, NOTIFY, REFER, PUBLISH and 
MESSAGE, as UAC, UAS and Proxy. 
Registrar and Event State Compositor (using the RAM built-in 
store or any other external database). 
Stateful proxy servers with serial and parallel forking. Stateless 
proxy servers, even using TCP/TLS. 
IPv6 support. NkSIP can connect IPv4-only with IPv6-only hosts. 
Support for NAPTR and SRV location, including priority and 
weights. 
Support for events, reliable provisional responses (100rel), 
session timers, path, service route, outbound and GRUU. 
15
Current features 
Automatic outbound registrations and timed pings. 
Dialog and SDP media start and stop detection. SDP 
processing utilities. 
UDP, TCP, TLS, SCTP and WEBSOCKETS transports, capable 
of handling thousands of simultaneous sessions. 
Robust and highly scalable, using all available processor cores. 
Currently is able to process 10.000 registrations/sec or 4.000 
call setups/sec (INVITE+ACK+BYE) on a 4-core i7 machine. 
A written from scratch, fully typed Erlang code easy to 
understand and extend. Unit tests cover nearly all of the 
functionality. Few external dependencies. 
Hot, on the fly core and application code upgrade. 
16
17
18
Plugin system 
Most complex functionality have been extracted 
into plugins: Registrar, PRACK, Outbound, etc. 
Rich set of callbacks available. 
The core remains simple. 
Each plugin adds API functions and callbacks for 
your application (and other, higher level plugins). 
Each NkAPP can implement a different set of 
plugins. Can even change them on the fly. 
Zero added latency, even with many plugins. 
19
Pending features 
Distribution based on the Dynamo 
model. 
Other languages for NkAPPs (Node.js, 
Lua, Python…) 
More RFCs and Event Packages 
IMS 
20
1 2 3 4 5 
6 7 8 9 10 
11 12 13 14 15 
16 17 18 19 20 
Node1 
21 
Ip1 Ip2 Ip3 Ip4 
Router / Gateway
Ip1 Ip2 Ip3 Ip4 
Node1 
Router / Gateway 
Node2 Node3 
22 
1 2 3 4 5 
6 7 8 9 10 
11 12 13 14 15 
16 17 18 19 20
Ip1 Ip2 Ip3 Ip4 
Node1 
Router / Gateway 
Node2 Node3 
23 
1 2 3 4 5 
6 7 8 9 10 
11 12 13 14 15 
16 17 18 19 20 
node2> nksip_admin -join node1 
node3> nksip_admin -join node1
Ip1 Ip4 Ip2 Ip3 
1 4 7 10 13 
16 19 
Node1 
Router / Gateway 
2 5 8 11 14 
17 20 
Node2 
3 6 9 12 15 
18 
Node3 
24
Ip1 Ip4 Ip2 Ip3 
1 4 7 10 13 
16 19 
Node1 
Router / Gateway 
2 5 8 11 14 
17 20 
Node2 
3 6 9 12 15 
18 
Node3 
node2> nksip_admin -remove node1 
25
Ip1 Ip2 Ip3 Ip4 
1 7 13 4 10 16 19 
Node1 
Router / Gateway 
2 5 8 11 14 
17 20 
Node2 
3 6 9 12 15 
18 
Node3 
node1> poweroff 
26
NKCORE 
ERLANG DISTRIBUTED SDN/NFV APPLICATION SERVER 
27
Another application server? 
NkSIP offers a fresh approach to the development of 
applications, and it has very powerful tools, but is focused on SIP. 
However, NkSIP could behave as a generic high-capacity, low-latency 
message processing engine. 
Many concepts and technology solutions from NkSIP are 
applicable to many other protocols: REST, Diameter, MSRP, 
XMPP, DNS, DHCP, Mail, OpenFlow… 
There is no easy to use, fully distributed, heavy-load open source 
application server out there. 
This looks a lot like an SDN/NFV framework! 
28
NkCORE’s vision 
You start any number of control nodes, and install any number of user 
applications (NkAPPs) on the cluster. 
Incoming messages (in a broad sense: SIP, REST request…) are sent to a 
specific control node and triggers the call of specific application callbacks. 
Applications are written using Javascript, Lua, Java, etc. 
Many modules are available, offering tools and semi automatic processing of 
messages: SIP (NkSIP), Web (NkREST), DNS, DHCP, Diameter, 
OpenFlow,etc. Each one adds new callbacks and APIs available to the 
application. Some of them offer additional optional plugins (i.e. event 
support packages for SIP). 
Many common functionality is available: configuration, cluster management, 
distributed database, network transport management, storage, dns, logging, 
authentication, roles, etc. 
29
NkCORE’s vision 
You also start any number of worker nodes. They don’t need to have Erlang, only Docker. 
The NkAPP can program the scheduling of tasks (i.e, 10 instances of Freeswitch, 5 instances of 
a node.js application, etc.), and NkCORE selects the worker nodes and downloads and starts 
and monitors the Docker processes in selected ones. 
Control nodes route specific traffic to any of the workers nodes, and offers network 
functionalities to the application: firewall, load balancer, VPNs, VLANs… (using Openvswitch). 
NkCORE offers easy-to-use APIs for each type of task, and can act as a proxy or B2BUA, 
transparent or not. The application doesn’t even need to know that it is speaking to several 
different instances of the processes. 
We plan to support many common used packages: 
Media servers (Asterisk, Freeswitch…) and XMPP (Ejabberd…) 
NoSQL (Redis, Riak, CouchDB…) and SQL databases (MySQL, PostgreSQL) 
Distributed Storage (Ceph) 
Mail Servers 
… 
30
Control Nodes 
Router / Gateway 
Node.JS Node.JS 
Python 
Node.JS Node.JS 
Erlang Python 
Erlang Erlang 
Routing Routing Routing 
Node.JS Python 
Freeswitch Asterisk 
Node.JS Node.JS 
Python 
Worker Nodes 
Storage Storage 
Docker instances 
Erlang code 
Native code 
31 
NkAPPs 
NkCORE NkCORE NkCORE
32
Expected features 
The applications are in full control not only of the business 
logic, but also of the network, the storage and the related 
processes (data bases, media servers…) 
Hot code loading (NkCORE itself, modules and user 
applications). Hot relocation of external processes. 
NkCORE offers a everything-as-a-service model to the 
applications (Freeswitch, DNS, Riak, …), even in local. Hybrid 
or hierarchical cloud model. Multi-cluster management. 
Allows applications to become highly available and scalable 
very easily. 
33
Thank you 
Carlos González Florido 
https://github.com/kalta/nksip 
carlosj.gf@gmail.com 
@carlosjgf 
34

More Related Content

What's hot

MariaDB Performance Tuning and Optimization
MariaDB Performance Tuning and OptimizationMariaDB Performance Tuning and Optimization
MariaDB Performance Tuning and OptimizationMariaDB plc
 
Go Programming Patterns
Go Programming PatternsGo Programming Patterns
Go Programming PatternsHao Chen
 
A Deep Dive Into Understanding Apache Cassandra
A Deep Dive Into Understanding Apache CassandraA Deep Dive Into Understanding Apache Cassandra
A Deep Dive Into Understanding Apache CassandraDataStax Academy
 
Analyse OpenLDAP logs with ELK
Analyse OpenLDAP logs with ELKAnalyse OpenLDAP logs with ELK
Analyse OpenLDAP logs with ELKClément OUDOT
 
Optimizing InfluxDB Performance in the Real World by Dean Sheehan, Senior Dir...
Optimizing InfluxDB Performance in the Real World by Dean Sheehan, Senior Dir...Optimizing InfluxDB Performance in the Real World by Dean Sheehan, Senior Dir...
Optimizing InfluxDB Performance in the Real World by Dean Sheehan, Senior Dir...InfluxData
 
Step-by-Step Introduction to Apache Flink
Step-by-Step Introduction to Apache Flink Step-by-Step Introduction to Apache Flink
Step-by-Step Introduction to Apache Flink Slim Baltagi
 
Get Intelligent with Metabase
Get Intelligent with MetabaseGet Intelligent with Metabase
Get Intelligent with MetabaseAnant Corporation
 
Trino: A Ludicrously Fast Query Engine - Pulsar Summit NA 2021
Trino: A Ludicrously Fast Query Engine - Pulsar Summit NA 2021Trino: A Ludicrously Fast Query Engine - Pulsar Summit NA 2021
Trino: A Ludicrously Fast Query Engine - Pulsar Summit NA 2021StreamNative
 
Oracle Sql Developer Data Modeler 3 3 new features
Oracle Sql Developer Data Modeler 3 3 new featuresOracle Sql Developer Data Modeler 3 3 new features
Oracle Sql Developer Data Modeler 3 3 new featuresPhilip Stoyanov
 
Apache Calcite (a tutorial given at BOSS '21)
Apache Calcite (a tutorial given at BOSS '21)Apache Calcite (a tutorial given at BOSS '21)
Apache Calcite (a tutorial given at BOSS '21)Julian Hyde
 
Introduction to NoSQL Databases
Introduction to NoSQL DatabasesIntroduction to NoSQL Databases
Introduction to NoSQL DatabasesDerek Stainer
 
A Deep Dive into Spark SQL's Catalyst Optimizer with Yin Huai
A Deep Dive into Spark SQL's Catalyst Optimizer with Yin HuaiA Deep Dive into Spark SQL's Catalyst Optimizer with Yin Huai
A Deep Dive into Spark SQL's Catalyst Optimizer with Yin HuaiDatabricks
 
FIWARE Wednesday Webinars - Architecting Your Smart Solution Powered by FIWARE
FIWARE Wednesday Webinars - Architecting Your Smart Solution Powered by FIWAREFIWARE Wednesday Webinars - Architecting Your Smart Solution Powered by FIWARE
FIWARE Wednesday Webinars - Architecting Your Smart Solution Powered by FIWAREFIWARE
 
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...Databricks
 
Data Security at Scale through Spark and Parquet Encryption
Data Security at Scale through Spark and Parquet EncryptionData Security at Scale through Spark and Parquet Encryption
Data Security at Scale through Spark and Parquet EncryptionDatabricks
 
Data ingestion and distribution with apache NiFi
Data ingestion and distribution with apache NiFiData ingestion and distribution with apache NiFi
Data ingestion and distribution with apache NiFiLev Brailovskiy
 
Apache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
Apache Spark Data Source V2 with Wenchen Fan and Gengliang WangApache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
Apache Spark Data Source V2 with Wenchen Fan and Gengliang WangDatabricks
 

What's hot (20)

MariaDB Performance Tuning and Optimization
MariaDB Performance Tuning and OptimizationMariaDB Performance Tuning and Optimization
MariaDB Performance Tuning and Optimization
 
Go Programming Patterns
Go Programming PatternsGo Programming Patterns
Go Programming Patterns
 
A Deep Dive Into Understanding Apache Cassandra
A Deep Dive Into Understanding Apache CassandraA Deep Dive Into Understanding Apache Cassandra
A Deep Dive Into Understanding Apache Cassandra
 
Analyse OpenLDAP logs with ELK
Analyse OpenLDAP logs with ELKAnalyse OpenLDAP logs with ELK
Analyse OpenLDAP logs with ELK
 
Optimizing InfluxDB Performance in the Real World by Dean Sheehan, Senior Dir...
Optimizing InfluxDB Performance in the Real World by Dean Sheehan, Senior Dir...Optimizing InfluxDB Performance in the Real World by Dean Sheehan, Senior Dir...
Optimizing InfluxDB Performance in the Real World by Dean Sheehan, Senior Dir...
 
Step-by-Step Introduction to Apache Flink
Step-by-Step Introduction to Apache Flink Step-by-Step Introduction to Apache Flink
Step-by-Step Introduction to Apache Flink
 
Airflow for Beginners
Airflow for BeginnersAirflow for Beginners
Airflow for Beginners
 
Get Intelligent with Metabase
Get Intelligent with MetabaseGet Intelligent with Metabase
Get Intelligent with Metabase
 
Trino: A Ludicrously Fast Query Engine - Pulsar Summit NA 2021
Trino: A Ludicrously Fast Query Engine - Pulsar Summit NA 2021Trino: A Ludicrously Fast Query Engine - Pulsar Summit NA 2021
Trino: A Ludicrously Fast Query Engine - Pulsar Summit NA 2021
 
Oracle Sql Developer Data Modeler 3 3 new features
Oracle Sql Developer Data Modeler 3 3 new featuresOracle Sql Developer Data Modeler 3 3 new features
Oracle Sql Developer Data Modeler 3 3 new features
 
Apache Calcite (a tutorial given at BOSS '21)
Apache Calcite (a tutorial given at BOSS '21)Apache Calcite (a tutorial given at BOSS '21)
Apache Calcite (a tutorial given at BOSS '21)
 
Introduction to NoSQL Databases
Introduction to NoSQL DatabasesIntroduction to NoSQL Databases
Introduction to NoSQL Databases
 
A Deep Dive into Spark SQL's Catalyst Optimizer with Yin Huai
A Deep Dive into Spark SQL's Catalyst Optimizer with Yin HuaiA Deep Dive into Spark SQL's Catalyst Optimizer with Yin Huai
A Deep Dive into Spark SQL's Catalyst Optimizer with Yin Huai
 
How to Use JSON in MySQL Wrong
How to Use JSON in MySQL WrongHow to Use JSON in MySQL Wrong
How to Use JSON in MySQL Wrong
 
FIWARE Wednesday Webinars - Architecting Your Smart Solution Powered by FIWARE
FIWARE Wednesday Webinars - Architecting Your Smart Solution Powered by FIWAREFIWARE Wednesday Webinars - Architecting Your Smart Solution Powered by FIWARE
FIWARE Wednesday Webinars - Architecting Your Smart Solution Powered by FIWARE
 
Introduction to influx db
Introduction to influx dbIntroduction to influx db
Introduction to influx db
 
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
 
Data Security at Scale through Spark and Parquet Encryption
Data Security at Scale through Spark and Parquet EncryptionData Security at Scale through Spark and Parquet Encryption
Data Security at Scale through Spark and Parquet Encryption
 
Data ingestion and distribution with apache NiFi
Data ingestion and distribution with apache NiFiData ingestion and distribution with apache NiFi
Data ingestion and distribution with apache NiFi
 
Apache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
Apache Spark Data Source V2 with Wenchen Fan and Gengliang WangApache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
Apache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
 

Similar to NkSIP: The Erlang SIP application server

Practical virtual network functions with Snabb (8th SDN Workshop)
Practical virtual network functions with Snabb (8th SDN Workshop)Practical virtual network functions with Snabb (8th SDN Workshop)
Practical virtual network functions with Snabb (8th SDN Workshop)Igalia
 
Software Stacks to enable SDN and NFV
Software Stacks to enable SDN and NFVSoftware Stacks to enable SDN and NFV
Software Stacks to enable SDN and NFVYoshihiro Nakajima
 
Snabb, a toolkit for building user-space network functions (ES.NOG 20)
Snabb, a toolkit for building user-space network functions (ES.NOG 20)Snabb, a toolkit for building user-space network functions (ES.NOG 20)
Snabb, a toolkit for building user-space network functions (ES.NOG 20)Igalia
 
Learn more about the tremendous value Open Data Plane brings to NFV
Learn more about the tremendous value Open Data Plane brings to NFVLearn more about the tremendous value Open Data Plane brings to NFV
Learn more about the tremendous value Open Data Plane brings to NFVGhodhbane Mohamed Amine
 
The Future of Networks is Open...Source
The Future of Networks is Open...SourceThe Future of Networks is Open...Source
The Future of Networks is Open...SourceFrancois Duthilleul
 
Collaborating with OpenDaylight for a Network-Enabled Cloud
Collaborating with OpenDaylight for a Network-Enabled CloudCollaborating with OpenDaylight for a Network-Enabled Cloud
Collaborating with OpenDaylight for a Network-Enabled CloudTesora
 
Red hat NFV Roadmap - OpenStack Summit 2016/Red Hat NFV Mini Summit
Red hat NFV Roadmap    - OpenStack Summit 2016/Red Hat NFV Mini SummitRed hat NFV Roadmap    - OpenStack Summit 2016/Red Hat NFV Mini Summit
Red hat NFV Roadmap - OpenStack Summit 2016/Red Hat NFV Mini Summitkimw001
 
SDN, OpenFlow, NFV, and Virtual Network
SDN, OpenFlow, NFV, and Virtual NetworkSDN, OpenFlow, NFV, and Virtual Network
SDN, OpenFlow, NFV, and Virtual NetworkTim4PreStartup
 
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...Mullaiselvan Mohan
 
How APIs are Transforming Cisco Solutions and Catalyzing an Innovation Ecosystem
How APIs are Transforming Cisco Solutions and Catalyzing an Innovation EcosystemHow APIs are Transforming Cisco Solutions and Catalyzing an Innovation Ecosystem
How APIs are Transforming Cisco Solutions and Catalyzing an Innovation EcosystemCisco DevNet
 
The advantages of Arista/OVH configurations, and the technologies behind buil...
The advantages of Arista/OVH configurations, and the technologies behind buil...The advantages of Arista/OVH configurations, and the technologies behind buil...
The advantages of Arista/OVH configurations, and the technologies behind buil...OVHcloud
 
FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)Kirill Tsym
 
FD.IO Vector Packet Processing
FD.IO Vector Packet ProcessingFD.IO Vector Packet Processing
FD.IO Vector Packet ProcessingKernel TLV
 
Current & Future Use-Cases of OpenDaylight
Current & Future Use-Cases of OpenDaylightCurrent & Future Use-Cases of OpenDaylight
Current & Future Use-Cases of OpenDaylightabhijit2511
 
2008-01-23 Red Hat Overview to CUNY Information Managers Forum
2008-01-23 Red Hat Overview to CUNY Information Managers Forum2008-01-23 Red Hat Overview to CUNY Information Managers Forum
2008-01-23 Red Hat Overview to CUNY Information Managers ForumShawn Wells
 
Resume_Appaji
Resume_AppajiResume_Appaji
Resume_AppajiAppaji K
 
Srinivasan resume updated
Srinivasan resume updatedSrinivasan resume updated
Srinivasan resume updatedSrinivasan V N
 
LAS16-405:OpenDataPlane: Software Defined Dataplane leader
LAS16-405:OpenDataPlane: Software Defined Dataplane leaderLAS16-405:OpenDataPlane: Software Defined Dataplane leader
LAS16-405:OpenDataPlane: Software Defined Dataplane leaderLinaro
 
Overview and Opentracing in theory by Gianluca Arbezzano
Overview and Opentracing in theory by Gianluca ArbezzanoOverview and Opentracing in theory by Gianluca Arbezzano
Overview and Opentracing in theory by Gianluca ArbezzanoGianluca Arbezzano
 

Similar to NkSIP: The Erlang SIP application server (20)

Practical virtual network functions with Snabb (8th SDN Workshop)
Practical virtual network functions with Snabb (8th SDN Workshop)Practical virtual network functions with Snabb (8th SDN Workshop)
Practical virtual network functions with Snabb (8th SDN Workshop)
 
Software Stacks to enable SDN and NFV
Software Stacks to enable SDN and NFVSoftware Stacks to enable SDN and NFV
Software Stacks to enable SDN and NFV
 
Snabb, a toolkit for building user-space network functions (ES.NOG 20)
Snabb, a toolkit for building user-space network functions (ES.NOG 20)Snabb, a toolkit for building user-space network functions (ES.NOG 20)
Snabb, a toolkit for building user-space network functions (ES.NOG 20)
 
Learn more about the tremendous value Open Data Plane brings to NFV
Learn more about the tremendous value Open Data Plane brings to NFVLearn more about the tremendous value Open Data Plane brings to NFV
Learn more about the tremendous value Open Data Plane brings to NFV
 
The Future of Networks is Open...Source
The Future of Networks is Open...SourceThe Future of Networks is Open...Source
The Future of Networks is Open...Source
 
Collaborating with OpenDaylight for a Network-Enabled Cloud
Collaborating with OpenDaylight for a Network-Enabled CloudCollaborating with OpenDaylight for a Network-Enabled Cloud
Collaborating with OpenDaylight for a Network-Enabled Cloud
 
Red hat NFV Roadmap - OpenStack Summit 2016/Red Hat NFV Mini Summit
Red hat NFV Roadmap    - OpenStack Summit 2016/Red Hat NFV Mini SummitRed hat NFV Roadmap    - OpenStack Summit 2016/Red Hat NFV Mini Summit
Red hat NFV Roadmap - OpenStack Summit 2016/Red Hat NFV Mini Summit
 
SDN, OpenFlow, NFV, and Virtual Network
SDN, OpenFlow, NFV, and Virtual NetworkSDN, OpenFlow, NFV, and Virtual Network
SDN, OpenFlow, NFV, and Virtual Network
 
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
 
How APIs are Transforming Cisco Solutions and Catalyzing an Innovation Ecosystem
How APIs are Transforming Cisco Solutions and Catalyzing an Innovation EcosystemHow APIs are Transforming Cisco Solutions and Catalyzing an Innovation Ecosystem
How APIs are Transforming Cisco Solutions and Catalyzing an Innovation Ecosystem
 
The advantages of Arista/OVH configurations, and the technologies behind buil...
The advantages of Arista/OVH configurations, and the technologies behind buil...The advantages of Arista/OVH configurations, and the technologies behind buil...
The advantages of Arista/OVH configurations, and the technologies behind buil...
 
FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)
 
FD.IO Vector Packet Processing
FD.IO Vector Packet ProcessingFD.IO Vector Packet Processing
FD.IO Vector Packet Processing
 
Current & Future Use-Cases of OpenDaylight
Current & Future Use-Cases of OpenDaylightCurrent & Future Use-Cases of OpenDaylight
Current & Future Use-Cases of OpenDaylight
 
2008-01-23 Red Hat Overview to CUNY Information Managers Forum
2008-01-23 Red Hat Overview to CUNY Information Managers Forum2008-01-23 Red Hat Overview to CUNY Information Managers Forum
2008-01-23 Red Hat Overview to CUNY Information Managers Forum
 
Resume_Appaji
Resume_AppajiResume_Appaji
Resume_Appaji
 
Srinivasan resume updated
Srinivasan resume updatedSrinivasan resume updated
Srinivasan resume updated
 
SDN Basics
SDN BasicsSDN Basics
SDN Basics
 
LAS16-405:OpenDataPlane: Software Defined Dataplane leader
LAS16-405:OpenDataPlane: Software Defined Dataplane leaderLAS16-405:OpenDataPlane: Software Defined Dataplane leader
LAS16-405:OpenDataPlane: Software Defined Dataplane leader
 
Overview and Opentracing in theory by Gianluca Arbezzano
Overview and Opentracing in theory by Gianluca ArbezzanoOverview and Opentracing in theory by Gianluca Arbezzano
Overview and Opentracing in theory by Gianluca Arbezzano
 

Recently uploaded

Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfkalichargn70th171
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 

Recently uploaded (20)

2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 

NkSIP: The Erlang SIP application server

  • 1. NKSIP THE ERLANG SIP APPLICATION SERVER 1
  • 2. What is NkSIP? An open-source, scalable, easy to use and (soon) distributed Erlang SIP application server 2
  • 3. A bit of background Emergency Coordination Centers 3
  • 4. Our’s vision A communications product you can use as cloud-based, on-premises or any combination of local/remote sites and cloud providers. The only operator’s interface for voice/data/video is the browser. The web application connects to any local cluster if available, or directly to the cloud if none is up. Self-healing, peace of mind, dev-ops friendly. If a node goes down in any of the local clusters, there is no hurry in repairing it. Even if the full cluster goes down, operators connect automatically to another one or directly to the cloud. The specific client application should be developed easily, in a few months, without special distributed programming abilities. 4
  • 5. First approach Distributed Erlang/OTP core NoSQL Database (CouchDB -> Riak) HTML5 client, websockets, WebRTC Freeswitch 5
  • 6. Erlang / OTP Language, environment and best practices developed by Ericsson from late 80s Building critical, highly available systems The secret sauce of WhatsApp, RabbitMQ, Ejabberd, Riak, CouchDB… Incredible simple (BUT functional) Building distributed applications is NOT, even with Erlang 6
  • 7. Erlang / OTP Lightweight concurrency Asynchronous communication Process isolation Continuous evolution of the system Errors will happen: ”Let it crash” 7
  • 8. Erlang / OTP APPLICATION SUPERVISOR WORKER 8
  • 9. Erlang / OTP APPLICATION SUPERVISOR WORKER NODE1 NODE2 9
  • 10. First approach Distributed Erlang/OTP core NoSQL Database (CouchDB -> Riak) HTML5 client, websockets, WebRTC Freeswitch 10
  • 11. Freeswitch was not enough We need SIP OpenSIPS, Kamailio, Mobicents… … they don’t really fit. 11
  • 12. Another SIP product? Existing products are either too complex to integrate into a distributed application server (Kamailio, Mobicents) or too high-level to fully use all SIP’s potential (Freeswitch, Asterisk). SIP is a very complex protocol, but most of this complexity has no added-value and should be hidden from the developer. On the other hand, SIP concepts are actually easy. No product clearly maps SIP concepts to the application. Implementing new RFCs is currently a painful process. SIP routing is at the very heart of any multimedia solution. Wouldn’t it be nice to have full control of it? 12
  • 13. NkSIP’s vision An open source tool to develop any kind of SIP application (NkAPPs), specially focused on highly available, distributed and scalable SIP applications. Each NkAPP application decides what callback functions to implement. Very few for a simple, standard behavior. Many of them for fine-tuned or low level behaviors. NkSIP takes care of all the details: retransmissions, transactions, authentication, dialogs, sessions, etc. All SIP applications are similar from NkSIP’s point of view: UACs, UASs, proxy servers, B2BUAs, SBCs, load testers… why a different box for each one? 13
  • 14. NkSIP’s vision NkSIP does NOT try to emulate a PBX. No dial plans. No extensions. Only pure SIP. You need to now what INVITE and BYE means to use NkSIP, but don't need a deep understanding of the details. Implementing new RFCs should be easy and natural. NkSIP offers a rock solid core, written from scratch core to develop distributed, highly available and scalable systems. It has a hierarchical plug-in system to develop new functionality without having to modify the core or other base plugins. The Erlang ecosystem is the perfect fit for this kind of product. You can run any number of SIP applications on a NkSIP cluster, using Erlang but (soon) also using Javascript, Lua, Java, or any other language capable of receiving a JSON over a socket connection. 14
  • 15. Current features Full support for all defined SIP methods: PRACK, INFO, UPDATE, SUBSCRIBE, NOTIFY, REFER, PUBLISH and MESSAGE, as UAC, UAS and Proxy. Registrar and Event State Compositor (using the RAM built-in store or any other external database). Stateful proxy servers with serial and parallel forking. Stateless proxy servers, even using TCP/TLS. IPv6 support. NkSIP can connect IPv4-only with IPv6-only hosts. Support for NAPTR and SRV location, including priority and weights. Support for events, reliable provisional responses (100rel), session timers, path, service route, outbound and GRUU. 15
  • 16. Current features Automatic outbound registrations and timed pings. Dialog and SDP media start and stop detection. SDP processing utilities. UDP, TCP, TLS, SCTP and WEBSOCKETS transports, capable of handling thousands of simultaneous sessions. Robust and highly scalable, using all available processor cores. Currently is able to process 10.000 registrations/sec or 4.000 call setups/sec (INVITE+ACK+BYE) on a 4-core i7 machine. A written from scratch, fully typed Erlang code easy to understand and extend. Unit tests cover nearly all of the functionality. Few external dependencies. Hot, on the fly core and application code upgrade. 16
  • 17. 17
  • 18. 18
  • 19. Plugin system Most complex functionality have been extracted into plugins: Registrar, PRACK, Outbound, etc. Rich set of callbacks available. The core remains simple. Each plugin adds API functions and callbacks for your application (and other, higher level plugins). Each NkAPP can implement a different set of plugins. Can even change them on the fly. Zero added latency, even with many plugins. 19
  • 20. Pending features Distribution based on the Dynamo model. Other languages for NkAPPs (Node.js, Lua, Python…) More RFCs and Event Packages IMS 20
  • 21. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Node1 21 Ip1 Ip2 Ip3 Ip4 Router / Gateway
  • 22. Ip1 Ip2 Ip3 Ip4 Node1 Router / Gateway Node2 Node3 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
  • 23. Ip1 Ip2 Ip3 Ip4 Node1 Router / Gateway Node2 Node3 23 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 node2> nksip_admin -join node1 node3> nksip_admin -join node1
  • 24. Ip1 Ip4 Ip2 Ip3 1 4 7 10 13 16 19 Node1 Router / Gateway 2 5 8 11 14 17 20 Node2 3 6 9 12 15 18 Node3 24
  • 25. Ip1 Ip4 Ip2 Ip3 1 4 7 10 13 16 19 Node1 Router / Gateway 2 5 8 11 14 17 20 Node2 3 6 9 12 15 18 Node3 node2> nksip_admin -remove node1 25
  • 26. Ip1 Ip2 Ip3 Ip4 1 7 13 4 10 16 19 Node1 Router / Gateway 2 5 8 11 14 17 20 Node2 3 6 9 12 15 18 Node3 node1> poweroff 26
  • 27. NKCORE ERLANG DISTRIBUTED SDN/NFV APPLICATION SERVER 27
  • 28. Another application server? NkSIP offers a fresh approach to the development of applications, and it has very powerful tools, but is focused on SIP. However, NkSIP could behave as a generic high-capacity, low-latency message processing engine. Many concepts and technology solutions from NkSIP are applicable to many other protocols: REST, Diameter, MSRP, XMPP, DNS, DHCP, Mail, OpenFlow… There is no easy to use, fully distributed, heavy-load open source application server out there. This looks a lot like an SDN/NFV framework! 28
  • 29. NkCORE’s vision You start any number of control nodes, and install any number of user applications (NkAPPs) on the cluster. Incoming messages (in a broad sense: SIP, REST request…) are sent to a specific control node and triggers the call of specific application callbacks. Applications are written using Javascript, Lua, Java, etc. Many modules are available, offering tools and semi automatic processing of messages: SIP (NkSIP), Web (NkREST), DNS, DHCP, Diameter, OpenFlow,etc. Each one adds new callbacks and APIs available to the application. Some of them offer additional optional plugins (i.e. event support packages for SIP). Many common functionality is available: configuration, cluster management, distributed database, network transport management, storage, dns, logging, authentication, roles, etc. 29
  • 30. NkCORE’s vision You also start any number of worker nodes. They don’t need to have Erlang, only Docker. The NkAPP can program the scheduling of tasks (i.e, 10 instances of Freeswitch, 5 instances of a node.js application, etc.), and NkCORE selects the worker nodes and downloads and starts and monitors the Docker processes in selected ones. Control nodes route specific traffic to any of the workers nodes, and offers network functionalities to the application: firewall, load balancer, VPNs, VLANs… (using Openvswitch). NkCORE offers easy-to-use APIs for each type of task, and can act as a proxy or B2BUA, transparent or not. The application doesn’t even need to know that it is speaking to several different instances of the processes. We plan to support many common used packages: Media servers (Asterisk, Freeswitch…) and XMPP (Ejabberd…) NoSQL (Redis, Riak, CouchDB…) and SQL databases (MySQL, PostgreSQL) Distributed Storage (Ceph) Mail Servers … 30
  • 31. Control Nodes Router / Gateway Node.JS Node.JS Python Node.JS Node.JS Erlang Python Erlang Erlang Routing Routing Routing Node.JS Python Freeswitch Asterisk Node.JS Node.JS Python Worker Nodes Storage Storage Docker instances Erlang code Native code 31 NkAPPs NkCORE NkCORE NkCORE
  • 32. 32
  • 33. Expected features The applications are in full control not only of the business logic, but also of the network, the storage and the related processes (data bases, media servers…) Hot code loading (NkCORE itself, modules and user applications). Hot relocation of external processes. NkCORE offers a everything-as-a-service model to the applications (Freeswitch, DNS, Riak, …), even in local. Hybrid or hierarchical cloud model. Multi-cluster management. Allows applications to become highly available and scalable very easily. 33
  • 34. Thank you Carlos González Florido https://github.com/kalta/nksip carlosj.gf@gmail.com @carlosjgf 34