\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 for ~ 1 year \end{itemize} \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}{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}{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}