summaryrefslogtreecommitdiff
path: root/2012/osmo_erlang-osdc2012
diff options
context:
space:
mode:
Diffstat (limited to '2012/osmo_erlang-osdc2012')
-rw-r--r--2012/osmo_erlang-osdc2012/core_net.pdfbin0 -> 576753 bytes
-rw-r--r--2012/osmo_erlang-osdc2012/core_net.snm0
-rw-r--r--2012/osmo_erlang-osdc2012/core_net.tex139
-rw-r--r--2012/osmo_erlang-osdc2012/gsm_network.pngbin0 -> 57000 bytes
-rw-r--r--2012/osmo_erlang-osdc2012/map_messaging.pngbin0 -> 89579 bytes
-rw-r--r--2012/osmo_erlang-osdc2012/map_supervision.pngbin0 -> 127410 bytes
-rw-r--r--2012/osmo_erlang-osdc2012/osi_model.pngbin0 -> 67094 bytes
-rw-r--r--2012/osmo_erlang-osdc2012/section-core_network.tex282
-rw-r--r--2012/osmo_erlang-osdc2012/section-erlang.tex72
-rw-r--r--2012/osmo_erlang-osdc2012/section-implementations.tex176
-rw-r--r--2012/osmo_erlang-osdc2012/tcap_messaging.pngbin0 -> 86453 bytes
-rw-r--r--2012/osmo_erlang-osdc2012/tcap_supervision.pngbin0 -> 259177 bytes
12 files changed, 669 insertions, 0 deletions
diff --git a/2012/osmo_erlang-osdc2012/core_net.pdf b/2012/osmo_erlang-osdc2012/core_net.pdf
new file mode 100644
index 0000000..8fec0b2
--- /dev/null
+++ b/2012/osmo_erlang-osdc2012/core_net.pdf
Binary files differ
diff --git a/2012/osmo_erlang-osdc2012/core_net.snm b/2012/osmo_erlang-osdc2012/core_net.snm
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/2012/osmo_erlang-osdc2012/core_net.snm
diff --git a/2012/osmo_erlang-osdc2012/core_net.tex b/2012/osmo_erlang-osdc2012/core_net.tex
new file mode 100644
index 0000000..61d5f55
--- /dev/null
+++ b/2012/osmo_erlang-osdc2012/core_net.tex
@@ -0,0 +1,139 @@
+% $Header: /cvsroot/latex-beamer/latex-beamer/solutions/conference-talks/conference-ornate-20min.en.tex,v 1.7 2007/01/28 20:48:23 tantau Exp $
+
+\documentclass{beamer}
+
+\usepackage{url}
+\makeatletter
+\def\url@leostyle{%
+ \@ifundefined{selectfont}{\def\UrlFont{\sf}}{\def\UrlFont{\tiny\ttfamily}}}
+\makeatother
+%% Now actually use the newly defined style.
+\urlstyle{leo}
+
+
+% This file is a solution template for:
+
+% - Talk at a conference/colloquium.
+% - Talk length is about 20min.
+% - Style is ornate.
+
+
+
+% Copyright 2004 by Till Tantau <tantau@users.sourceforge.net>.
+%
+% In principle, this file can be redistributed and/or modified under
+% the terms of the GNU Public License, version 2.
+%
+% However, this file is supposed to be a template to be modified
+% for your own needs. For this reason, if you use this file as a
+% template and not specifically distribute it as part of a another
+% package/program, I grant the extra permission to freely copy and
+% modify this file as you see fit and even to delete this copyright
+% notice.
+
+
+\mode<presentation>
+{
+ \usetheme{Warsaw}
+ % or ...
+
+ \setbeamercovered{transparent}
+ % or whatever (possibly just delete it)
+}
+
+
+\usepackage[english]{babel}
+% or whatever
+
+\usepackage[latin1]{inputenc}
+% or whatever
+
+\usepackage{times}
+\usepackage[T1]{fontenc}
+% Or whatever. Note that the encoding and the font should match. If T1
+% does not look nice, try deleting the line with the fontenc.
+
+
+\title{Erlang SCCP/TCAP/MAP Implementations}
+
+%\subtitle
+%{community based Free / Open Source Software for communications}
+
+\author{Harald Welte <laforge@gnumonks.org>}
+
+\institute
+{gnumonks.org\\hmw-consulting.de\\sysmocom GmbH}
+% - Use the \inst command only if there are several affiliations.
+% - Keep it simple, no one is interested in your street address.
+
+\date[] % (optional, should be abbreviation of conference name)
+{October 13, 2012 - OSDC.fr - Paris / France}
+% - Either use conference name or its abbreviation.
+% - Not really informative to the audience, more for people (including
+% yourself) who are reading the slides online
+
+\subject{Communications}
+% This is only inserted into the PDF information catalog. Can be left
+% out.
+
+
+
+% If you have a file called "university-logo-filename.xxx", where xxx
+% is a graphic format that can be processed by latex or pdflatex,
+% resp., then you can add a logo as follows:
+
+% \pgfdeclareimage[height=0.5cm]{university-logo}{university-logo-filename}
+% \logo{\pgfuseimage{university-logo}}
+
+
+
+% Delete this, if you do not want the table of contents to pop up at
+% the beginning of each subsection:
+%\AtBeginSubsection[]
+%{
+% \begin{frame}<beamer>{Outline}
+% \tableofcontents[currentsection,currentsubsection]
+% \end{frame}
+%}
+
+
+% If you wish to uncover everything in a step-wise fashion, uncomment
+% the following command:
+
+%\beamerdefaultoverlayspecification{<+->}
+
+
+\begin{document}
+
+\begin{frame}
+ \titlepage
+\end{frame}
+
+\begin{frame}{Outline}
+ \tableofcontents[hideallsubsections]
+ % You might wish to add the option [pausesections]
+\end{frame}
+
+
+% Structuring a talk is a difficult task and the following structure
+% may not be suitable. Here are some rules that apply for this
+% solution:
+
+% - Exactly two or three sections (other than the summary).
+% - At *most* three subsections per section.
+% - Talk about 30s to 2min per frame. So there should be between about
+% 15 and 30 frames, all told.
+
+% - A conference audience is likely to know very little of what you
+% are going to talk about. So *simplify*!
+% - In a 20min talk, getting the main ideas across is hard
+% enough. Leave out details, even if it means being less precise than
+% you think necessary.
+% - If you omit details that are vital to the proof/implementation,
+% just say so once. Everybody will be happy with that.
+
+\include{section-core_network}
+\include{section-erlang}
+\include{section-implementations}
+
+\end{document}
diff --git a/2012/osmo_erlang-osdc2012/gsm_network.png b/2012/osmo_erlang-osdc2012/gsm_network.png
new file mode 100644
index 0000000..c5f6399
--- /dev/null
+++ b/2012/osmo_erlang-osdc2012/gsm_network.png
Binary files differ
diff --git a/2012/osmo_erlang-osdc2012/map_messaging.png b/2012/osmo_erlang-osdc2012/map_messaging.png
new file mode 100644
index 0000000..49d1dd9
--- /dev/null
+++ b/2012/osmo_erlang-osdc2012/map_messaging.png
Binary files differ
diff --git a/2012/osmo_erlang-osdc2012/map_supervision.png b/2012/osmo_erlang-osdc2012/map_supervision.png
new file mode 100644
index 0000000..1be3d11
--- /dev/null
+++ b/2012/osmo_erlang-osdc2012/map_supervision.png
Binary files differ
diff --git a/2012/osmo_erlang-osdc2012/osi_model.png b/2012/osmo_erlang-osdc2012/osi_model.png
new file mode 100644
index 0000000..982e529
--- /dev/null
+++ b/2012/osmo_erlang-osdc2012/osi_model.png
Binary files differ
diff --git a/2012/osmo_erlang-osdc2012/section-core_network.tex b/2012/osmo_erlang-osdc2012/section-core_network.tex
new file mode 100644
index 0000000..e9948cf
--- /dev/null
+++ b/2012/osmo_erlang-osdc2012/section-core_network.tex
@@ -0,0 +1,282 @@
+\section{The GSM core network}
+
+\subsection{GSM core network components}
+
+\begin{frame}{GSM core network components}
+ \begin{description}[MSC]
+ \item[MSC] (Mobile Switching Center): The central switch
+ \item[HLR] (Home Location Register): Database of subscribers
+ \item[AUC] (Authentication Center): Database of authentication keys
+ \item[VLR] (Visitor Location Register): For roaming users
+ \item[EIR] (Equipment Identity Register): To block stolen phones
+ \end{description}
+\end{frame}
+
+\begin{frame}{GSM network structure}
+\begin{description}[BTS]
+\item[MSC] Actual call switching and top-level mobility functions. May serve dozens of location areas
+\item[VLR] Temporary cache of subscriber data from HLR + TMSI
+\item[HLR] Subscriber databases + subscriber location information
+\item[AUC] Generation of authentication tuples
+\item[SMSC] SMS Service Centre, store+forward for SMS
+\end{description}
+\end{frame}
+
+\begin{frame}{GSM core network integration}
+\begin{itemize}
+ \item VLR often integrated into MSC
+ \item AUC often integrated with AUC
+ \item integration so common, many graphs/diagrams are actually
+not 100\% correct
+\end{itemize}
+\end{frame}
+
+\begin{frame}{GSM Network Structure}
+\includegraphics[width=100mm]{gsm_network.png}
+\end{frame}
+
+\begin{frame}{GSM network interfaces}
+ \begin{description}[D]
+ \item[C] Interface between GMSC and HLR
+ \item[D] Interface between MSC and HLR
+ \item[E] Interface between MSC and MSC
+ \end{description}
+All of them based on MAP, so C/D/E not commonly distinguished
+\end{frame}
+
+\subsection{GSM core network protocols}
+
+\begin{frame}{core network protocol stack}
+Traditional telephony based on SS7 / CS7, GSM too
+\begin{itemize}
+ \item Lower layers (MTP2/MTP3) re-used
+ \item ISUP used for actual call control signalling
+ \item SCCP for routing / GTT
+ \item TCAP for transaction supprt
+ \item MAP for actual GSM related signalling
+\end{itemize}
+\end{frame}
+
+\begin{frame}{SS7 networks}
+\begin{itemize}
+ \item STP - Signalling Transfer Point
+ \begin{itemize}
+ \item {\em Router} for SCCP
+ \item performs GTT (see below)
+ \end{itemize}
+ \item SCP - Signalling Control Point
+ \begin{itemize}
+ \item {\em End-node} like MSC/HLR
+ \item SCP has GT, PC, ..
+ \end{itemize}
+\end{itemize}
+\end{frame}
+
+\begin{frame}{SS7 addresses}
+\begin{itemize}
+ \item Point Code (PC)
+ \begin{itemize}
+ \item typically unique within PLMN / country
+ \end{itemize}
+ \item Global Title (GT)
+ \begin{itemize}
+ \item world-wide unique address
+ \item translated into PC by GTT at STP
+ \end{itemize}
+ \item Subsystem Number (SSN)
+ \begin{itemize}
+ \item logical function address inside network (MSC, VLR, HLR, ...)
+ \item not used on international links
+ \end{itemize}
+\end{itemize}
+\end{frame}
+
+\begin{frame}{SS7 GTT (Global Title Translation)}
+Global Title Translation
+\begin{itemize}
+ \item can happen at any STP
+ \item translates a Destination GT into new destination address
+ \item new dest address can be any address, such as
+ \begin{itemize}
+ \item new global title (GT)
+ \item point code (PC)
+ \item sub-system number (SSN)
+ \end{itemize}
+ \item GTT rules explicitly configured by operator, e.g.
+ \begin{itemize}
+ \item prefix or range based match
+ \item (inter)nationalize numbering plan
+ \item add digits at beginning or end
+ \end{itemize}
+\end{itemize}
+\end{frame}
+
+\begin{frame}{SS7 physical layer}
+\begin{itemize}
+ \item{classic SS7 signalling over TDM circuits}
+ \begin{itemize}
+ \item E1 timeslot (64kbps)
+ \item multiple E1 timeslots (N*64kbps)
+ \item MTP Level 2 / MTP Level 3
+ \end{itemize}
+ \item modern networks use SIGTRAN
+ \begin{itemize}
+ \item IP as network layer replaces E1 lines
+ \item SCTP on top(no TCP/UDP!)
+ \item many different SIGTRAN stacking options
+ \end{itemize}
+ \item some vendor-proprietary protocols like SCCPlite
+\end{itemize}
+\end{frame}
+
+\begin{frame}{SIGTRAN stacking options}
+SIGTRAN != SIGTRAN
+\begin{itemize}
+ \item IP/SCTP/M2PA/MTP2/MTP3/SCCP/TCAP/MAP
+ \item IP/SCTP/M2UA/MTP3/SCCP/TCAP/MAP
+ \item IP/SCTP/M3UA/SCCP/TCAP/MAP
+ \item IP/SCTP/SUA/TCAP/MAP
+\end{itemize}
+\end{frame}
+
+\begin{frame}{SCCP}
+SCCP takes care of
+\begin{itemize}
+ \item Global Title based addressing
+ \item Global Title Translation
+ \item connection-oriented or connectionless semantics
+ \item GSM core network interfaces with MAP/CAP only use
+connection-less UDT service
+\end{itemize}
+\end{frame}
+
+\begin{frame}{TCAP}
+\begin{itemize}
+ \item Idea: decouple transaction logic from actual application
+ \item transaction semantics can be used by multiple higher-layer protocols
+ \item state machines on both sides maintained outside of application
+ \item protocol specified in ASN.1, BER encoding
+\end{itemize}
+\end{frame}
+
+\begin{frame}{MAP - Mobile Application Part}
+\begin{itemize}
+ \item used between all classic GSM core network components
+ \item application protocol on top of TCAP
+ \item protocol specified in ASN.1, BER encoding
+\end{itemize}
+\end{frame}
+
+\begin{frame}{CAP - Camel Application Part}
+\begin{itemize}
+ \item used for CAMEL entities (gsmSCF, gsmSSF, gprsSSF, gsmSRF)
+ \item application protocol on top of TCAP
+ \item protocol specified in ASN.1, BER encoding
+\end{itemize}
+\end{frame}
+
+%\section{Roaming interfaces}
+%
+%\subsection{Roaming introduction}
+%
+%\begin{frame}{Introduction to Roaming}
+%Roaming enables subscribers to use other operators' networks
+%\begin{itemize}
+% \item Home Network is called HPLMN
+% \item Visited Network is called VPLMN
+% \item Roaming requres between HPLMN and VPLMN
+% \begin{itemize}
+% \item Roaming agreement (contract)
+% \item SS7 connectivity (ISUP/MAP/CAP)
+% \item IP connectivity (for packet data)
+% \end{itemize}
+%\end{itemize}
+%\end{frame}
+%
+%\begin{frame}{Roaming principle}
+%\begin{itemize}
+% \item MS, MSC, VLR and SGSN are in VPLMN
+% \item HLR, AUC, GMSC and GGSN are in HPLMN
+% \item they talk to each other via MAP, just like in non-roaming case
+% \item selection of HPLMN based on IMSI of subscriber
+% \item non-roaming caes: HPLMN == VPLMN
+%\end{itemize}
+%\end{frame}
+%
+%\begin{frame}{MVNO - Mobile Virtual Network Operators}
+%A MVNO setup is a special case of roaming
+%\begin{itemize}
+% \item MNO operates PLMN with RAN and CN
+% \item MVNO operates HPLMN without RAN (BSC/BTS)
+% \item MVNO subscribers always roam into MNO network
+%\end{itemize}
+%\end{frame}
+%
+%\subsection{Roaming transactions}
+%FIXME
+
+%\subsection{Traditional Billing}
+%
+%\begin{frame}{Traditional Billing}
+%Initially, GSM was designed for business users
+%\begin{itemize}
+% \item Billing was always post-paid
+% \item Each PLMN simply logs all call/sms
+% \item Logs called CDR (Call Data Record)
+% \item At the end of the month, invoices are generated
+% \item CDR records are exchanged between roaming partners
+%\end{itemize}
+%\end{frame}
+%
+%\begin{frame}{Billing for Roaming}
+%\begin{itemize}
+% \item CDR files often vendor-specific / custom
+% \item GSMA established a standard called TAP
+% \item TAP is the standard for exchange of billing records
+%between roaming partners
+% \item Summary: Intra-PLMN: CDR, Inter-PLMN: TAP
+% \item TAP has many versions/generations
+% \item Specified in ASN.1
+%\end{itemize}
+%\end{frame}
+%
+%\begin{frame}{The advent of pre-paid}
+%\begin{itemize}
+% \item At some point, users wanted pre-paid services
+% \item Difficult to implement in traditional billing architecture
+% \item In HPLMN, every operator could come up with custom
+%solution
+% \item Thus, pre-paid initially not supported in roaming
+% \item In the early pre-paid days, there were lots of ways to exceed pre-paid balance
+%\end{itemize}
+%\end{frame}
+%
+%\begin{frame}{Pre-paid required fundamental changes}
+%\begin{itemize}
+% \item The pre-paid balance / account is maintained in HPLMN
+% \item HPLMN needs much more control over user while roaming
+% \item A new protocol (CAMEL) was introduced, as well as new
+%entities in the network
+% \item Lots of changes all over netowrk elements (MSC, SGSN, HLR)
+%\end{itemize}
+%\end{frame}
+%
+%\subsection{CAMEL}
+%
+%\begin{frame}{CAMEL - Customized Applications Mobile Enhanced Logic}
+%\begin{itemize}
+% \item gsmSCF - Service Control Function
+% \begin{itemize}
+% \item receives per-subscriber specific config from HLR
+%(CSI: CAMEL Subscription Information)
+% \item remotely controls call, SMS, etc. processing
+% \end{itemize}
+% \item gsmSSF - Service Switching Function
+% \begin{itemize}
+% \item built into MSC
+% \item hooks / triggers at key state changes
+% \item allows gsmSCF to alter/override/abort transactions
+% \end{itemize}
+% \item gprsSSF provides similar feature inside SGSN
+%\end{itemize}
+%\end{frame}
diff --git a/2012/osmo_erlang-osdc2012/section-erlang.tex b/2012/osmo_erlang-osdc2012/section-erlang.tex
new file mode 100644
index 0000000..1af42e2
--- /dev/null
+++ b/2012/osmo_erlang-osdc2012/section-erlang.tex
@@ -0,0 +1,72 @@
+\section{Erlang in Osmocom}
+
+\begin{frame}{Introducing Erlang}
+Erlang/OTP
+\begin{itemize}
+ \item is a functional, non-OO programming language
+ \item promotes some principles that make it easier to write secure code
+ \item was crreated by Ericsson for Telecom signalling applications
+ \item has excellent built-in ASN.1 compiler + runtime support
+ \item has {\tt gen\_fsm} support for well-defined finit state machines
+\end{itemize}
+\end{frame}
+
+\begin{frame}{Safe and secure programming}
+Erlang enables and encourages to
+\begin{itemize}
+ \item avoid defensive programming, rather fail-fast and raise exceptions
+ \item avoid having global/shared state as everything is pass-by-value, not reference
+ \item avoid accidential/improper reuse of variables by single assignment
+ \item not have to worry about memory allocation problems like
+ buffer overflows / double-free
+\end{itemize}
+\end{frame}
+
+\begin{frame}{Erlang headaches}
+If you're used to C/C++ or even Java, Erlang will give you headaches,
+too.
+\begin{itemize}
+ \item you have no interative loops like for/while, but always
+ have to use (tail) recursion
+ \item you have to type a lot when accessing members of records
+ (structures), as you need to specify the type name on
+ every access
+ \item avoiding global state may be useful, but very hard at
+ times
+\end{itemize}
+\end{frame}
+
+\begin{frame}{Reasons to use Erlang in Osmocom}
+\begin{itemize}
+ \item best ASN.1 support found as Free Software for any
+ programming language
+ \begin{itemize}
+ \item TCAP/MAP use ASN.1 Information Object Classes,
+ which e.g. asn1c doesn't support
+ \item supports PER aligned and unaligned, required in
+ RANAP/RRC for UMTS.
+ \item very strict validation of input data, including
+ range checks of integer values against
+ constraings in ASN.1, etc.
+ \end{itemize}
+ \item built-in support for finite state machines
+ \item Erlang {\em many processes and message passing} model 1:1
+ match to ITU TCAP specification.
+\end{itemize}
+\end{frame}
+
+\begin{frame}{Erlang in Osmocom projets}
+\begin{itemize}
+ \item all current Osmocom developers are C (possibly C++) developers
+ \item nobody really likes to use some bloatet inefficient and
+ unknown programming language (compared to C...)
+ \item almost every other sub-project of Osmocom is implemented
+ in pure C
+ \item apart from my projects described here, Erlang hasn't
+ really picked up with other developers
+ \item Erlang wasn't chosen because we love it, but because it
+ makes techical sense in some specific applications,
+ compared to alternavies requiring to buy/user
+ porprietary ASN.1 tools or write our own
+\end{itemize}
+\end{frame}
diff --git a/2012/osmo_erlang-osdc2012/section-implementations.tex b/2012/osmo_erlang-osdc2012/section-implementations.tex
new file mode 100644
index 0000000..1c695ac
--- /dev/null
+++ b/2012/osmo_erlang-osdc2012/section-implementations.tex
@@ -0,0 +1,176 @@
+
+\section{Core Network protocol implementations}
+
+\subsection{Erlang implementations}
+
+\begin{frame}{Erlang osmo\_ss7}
+\begin{itemize}
+ \item Signalling link management
+ \item Signalling linkset management
+ \item MTP-level routing
+ \item Protocol codecs
+ \begin{itemize}
+ \item BSSMAP, ISUP, M2PA, M2UA, M3UA, MTP3, SCCP, SUA
+ \end{itemize}
+ \item Various different protocol implementations
+ \begin{itemize}
+ \item SIGTRAN: M3UA, M2PA, M2UA, SUA
+ \item IPA multiplex / SCCP lite
+ \end{itemize}
+\end{itemize}
+\end{frame}
+
+\begin{frame}{Erlang osmo\_sccp}
+SCCP implementation, typcially used on top of osmo\_sccp
+\begin{itemize}
+ \item SCCP connectionless (SCLC)
+ \item SCCP connection oriented (SCOC)
+ \item SCCP routing / gtt (SCRC)
+ \item applications can bind to SSN numbers
+\end{itemize}
+\end{frame}
+
+\begin{frame}{Erlang osmo\_map}
+\begin{itemize}
+ \item Not a full-blown MAP end-user implementation
+ \item Primarily a set of integrated TCAP+MAP codec
+ \item Used for protocol analysis/dissection
+ \item Used for transparent MAP mangling engines
+ \item Think of FTP/IRC NAT in TCP/IP, where you need to modify
+ addresses contained in the payload (not header) of the
+ messages
+\end{itemize}
+\end{frame}
+
+\begin{frame}{Erlang mgw\_nat}
+\begin{itemize}
+ \item Strange transparent SCCP/TCAP/MAP gateway
+ \item Supports all kinds of strange operations
+ \begin{itemize}
+ \item SCCP Global Title Masquerade (dynamic GT pool)
+ \item Replace VLR/MSC GT inside MAP payload
+ \item Supported Camel Phase patching
+ \item 1:1 IMSI mapping in MAP payload
+ \item ISUP GT mangling
+ \item national/international numbering plan conversions
+ \end{itemize}
+ \item Used in multiple production installations in real operator
+ core network for ~ 2 years
+\end{itemize}
+\end{frame}
+
+\begin{frame}{Erlang signerl TCAP}
+\includegraphics[width=60mm]{osi_model.png}
+\end{frame}
+
+\begin{frame}{Erlang signerl TCAP}
+\begin{itemize}
+ \item Full ITU-T TCAP implementation
+ \item 1:1 mapping of ITU-T TCAP state machines to Erlang gen\_fsm
+ \begin{itemize}
+ \item DHA - Dialogue Handling
+ \item TSM - Transaction State Machine
+ \item ISM - Invocation State Machine
+ \end{itemize}
+ \item 1:1 mapping of other ITU-T entities to Erlang gen\_server
+ \begin{itemize}
+ \item CCO - Componen Coordinator
+ \item TCO - Transaction Coordinator
+ \end{itemize}
+ \item Some old/incomplete/bit-rotten ANSI TCAP code
+\end{itemize}
+\end{frame}
+
+\begin{frame}{Message flow among signerl TCAP Processes}
+\includegraphics[width=100mm]{tcap_messaging.png}
+\end{frame}
+
+\begin{frame}{Erlang supervisor hierarchy in signerl TCAP}
+\includegraphics[width=70mm]{tcap_supervision.png}
+\end{frame}
+
+
+\begin{frame}{Erlang signerl TCAP}
+\begin{itemize}
+ \item properly implements the N-primitives to lower level
+ \item properly implements all TR-primitives internally (TC / TR
+ split)
+ \item properly implements all TC-primitives towards the TCAP user
+ \item Can be used on top of osmo\_sccp
+ \item Can be used directly by application servers or via signerl MAP
+\end{itemize}
+\end{frame}
+
+\begin{frame}{Erlang signerl MAP}
+\begin{itemize}
+ \item Interface between MAP primitives and TCAP primitives
+ \item Provides very little benefit over using TCAP directly
+ \item Not used much so far, I always use TCAP user API instead
+\end{itemize}
+\end{frame}
+
+
+\begin{frame}{Message flow among signerl MAP Processes}
+\includegraphics[width=100mm]{map_messaging.png}
+\end{frame}
+
+\begin{frame}{Erlang supervisor hierarchy in signerl TCAP}
+\includegraphics[width=90mm]{map_supervision.png}
+\end{frame}
+
+\begin{frame}{Erlang application servers}
+\begin{itemize}
+ \item No complete implementation of any GSM core network node
+ yet
+ \item Lots of testing / experimentation code for generating
+ single MAP transactions against existing/proprietary
+ core network components
+ \item Work on a HLR based on Mnesia DB should be starting soon
+\end{itemize}
+\end{frame}
+
+%\subsection{C implementations}
+%
+%\begin{frame}{libosmo-sccp}
+%\begin{itemize}
+% \item minimalistic SCCP implementation
+% \item only used inside IPA multiplex / SCCP lite
+% \item no retransmissions / GT routing / translation
+% \item stable, used in production (osmo-bsc)
+%\end{itemize}
+%\end{frame}
+%
+%\begin{frame}{libosmo-asn1-tcap}
+%\begin{itemize}
+% \item asn1c-generated TCAP codec
+% \item almost no manual code
+% \item built as shared library
+%\end{itemize}
+%\end{frame}
+%
+%\begin{frame}{libosmo-tcap}
+%\begin{itemize}
+% \item First attempt of Harald to implement TCAP (before Erlang)
+% \item 1:1 mapping of ITU-T TCAP components to C source files
+% \item Heavily based on asn1c-generated data structures
+% \item Uses libosmo-asn1-tcap
+%\end{itemize}
+%\end{frame}
+%
+%\begin{frame}{libosmo-asn1-map}
+%\begin{itemize}
+% \item asn1c-generated MAP code
+% \item almost no manual code
+% \item built as shared library
+%\end{itemize}
+%\end{frame}
+%
+%\begin{frame}{Future of C implementation?}
+%\begin{itemize}
+% \item unclear at this point
+% \item first finish testing/deploying Erlang implementations
+% \item possible use case for Gc interface of osmo-sgsn (SGSN-HLR)
+% \item Do we interface C code with Erlang MAP or maintain C implementation in parallel?
+%\end{itemize}
+%\end{frame}
+
diff --git a/2012/osmo_erlang-osdc2012/tcap_messaging.png b/2012/osmo_erlang-osdc2012/tcap_messaging.png
new file mode 100644
index 0000000..25a644f
--- /dev/null
+++ b/2012/osmo_erlang-osdc2012/tcap_messaging.png
Binary files differ
diff --git a/2012/osmo_erlang-osdc2012/tcap_supervision.png b/2012/osmo_erlang-osdc2012/tcap_supervision.png
new file mode 100644
index 0000000..4199fd0
--- /dev/null
+++ b/2012/osmo_erlang-osdc2012/tcap_supervision.png
Binary files differ
personal git repositories of Harald Welte. Your mileage may vary