From fca59bea770346cf1c1f9b0e00cb48a61b44a8f3 Mon Sep 17 00:00:00 2001
From: Harald Welte <laforge@gnumonks.org>
Date: Sun, 25 Oct 2015 21:00:20 +0100
Subject: import of old now defunct presentation slides svn repo

---
 2012/osmo_erlang-osdc2012/core_net.pdf             | Bin 0 -> 576753 bytes
 2012/osmo_erlang-osdc2012/core_net.snm             |   0
 2012/osmo_erlang-osdc2012/core_net.tex             | 139 ++++++++++
 2012/osmo_erlang-osdc2012/gsm_network.png          | Bin 0 -> 57000 bytes
 2012/osmo_erlang-osdc2012/map_messaging.png        | Bin 0 -> 89579 bytes
 2012/osmo_erlang-osdc2012/map_supervision.png      | Bin 0 -> 127410 bytes
 2012/osmo_erlang-osdc2012/osi_model.png            | Bin 0 -> 67094 bytes
 2012/osmo_erlang-osdc2012/section-core_network.tex | 282 +++++++++++++++++++++
 2012/osmo_erlang-osdc2012/section-erlang.tex       |  72 ++++++
 .../section-implementations.tex                    | 176 +++++++++++++
 2012/osmo_erlang-osdc2012/tcap_messaging.png       | Bin 0 -> 86453 bytes
 2012/osmo_erlang-osdc2012/tcap_supervision.png     | Bin 0 -> 259177 bytes
 12 files changed, 669 insertions(+)
 create mode 100644 2012/osmo_erlang-osdc2012/core_net.pdf
 create mode 100644 2012/osmo_erlang-osdc2012/core_net.snm
 create mode 100644 2012/osmo_erlang-osdc2012/core_net.tex
 create mode 100644 2012/osmo_erlang-osdc2012/gsm_network.png
 create mode 100644 2012/osmo_erlang-osdc2012/map_messaging.png
 create mode 100644 2012/osmo_erlang-osdc2012/map_supervision.png
 create mode 100644 2012/osmo_erlang-osdc2012/osi_model.png
 create mode 100644 2012/osmo_erlang-osdc2012/section-core_network.tex
 create mode 100644 2012/osmo_erlang-osdc2012/section-erlang.tex
 create mode 100644 2012/osmo_erlang-osdc2012/section-implementations.tex
 create mode 100644 2012/osmo_erlang-osdc2012/tcap_messaging.png
 create mode 100644 2012/osmo_erlang-osdc2012/tcap_supervision.png

(limited to '2012/osmo_erlang-osdc2012')

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
Binary files /dev/null and b/2012/osmo_erlang-osdc2012/core_net.pdf 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
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
Binary files /dev/null and b/2012/osmo_erlang-osdc2012/gsm_network.png 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
Binary files /dev/null and b/2012/osmo_erlang-osdc2012/map_messaging.png 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
Binary files /dev/null and b/2012/osmo_erlang-osdc2012/map_supervision.png 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
Binary files /dev/null and b/2012/osmo_erlang-osdc2012/osi_model.png 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
Binary files /dev/null and b/2012/osmo_erlang-osdc2012/tcap_messaging.png 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
Binary files /dev/null and b/2012/osmo_erlang-osdc2012/tcap_supervision.png differ
-- 
cgit v1.2.3