summaryrefslogtreecommitdiff
path: root/2012/osmo_erlang-osdc2012/section-implementations.tex
diff options
context:
space:
mode:
Diffstat (limited to '2012/osmo_erlang-osdc2012/section-implementations.tex')
-rw-r--r--2012/osmo_erlang-osdc2012/section-implementations.tex176
1 files changed, 176 insertions, 0 deletions
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}
+
personal git repositories of Harald Welte. Your mileage may vary