\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}