From fca59bea770346cf1c1f9b0e00cb48a61b44a8f3 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sun, 25 Oct 2015 21:00:20 +0100 Subject: import of old now defunct presentation slides svn repo --- 2012/core_net-odc2012/core_net.pdf | Bin 0 -> 282736 bytes 2012/core_net-odc2012/core_net.snm | 0 2012/core_net-odc2012/core_net.tex | 138 +++++++++++ 2012/core_net-odc2012/section-core_network.tex | 282 ++++++++++++++++++++++ 2012/core_net-odc2012/section-implementations.tex | 153 ++++++++++++ 5 files changed, 573 insertions(+) create mode 100644 2012/core_net-odc2012/core_net.pdf create mode 100644 2012/core_net-odc2012/core_net.snm create mode 100644 2012/core_net-odc2012/core_net.tex create mode 100644 2012/core_net-odc2012/section-core_network.tex create mode 100644 2012/core_net-odc2012/section-implementations.tex (limited to '2012/core_net-odc2012') diff --git a/2012/core_net-odc2012/core_net.pdf b/2012/core_net-odc2012/core_net.pdf new file mode 100644 index 0000000..b96f93d Binary files /dev/null and b/2012/core_net-odc2012/core_net.pdf differ diff --git a/2012/core_net-odc2012/core_net.snm b/2012/core_net-odc2012/core_net.snm new file mode 100644 index 0000000..e69de29 diff --git a/2012/core_net-odc2012/core_net.tex b/2012/core_net-odc2012/core_net.tex new file mode 100644 index 0000000..31110b0 --- /dev/null +++ b/2012/core_net-odc2012/core_net.tex @@ -0,0 +1,138 @@ +% $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 . +% +% 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 +{ + \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{osmocom.org - Core Network Protocols} + +%\subtitle +%{community based Free / Open Source Software for communications} + +\author{Harald Welte } + +\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) +{March 2012, OsmoDevCon 2012, Berlin / Germany} +% - 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}{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-implementations} + +\end{document} diff --git a/2012/core_net-odc2012/section-core_network.tex b/2012/core_net-odc2012/section-core_network.tex new file mode 100644 index 0000000..629cac1 --- /dev/null +++ b/2012/core_net-odc2012/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]{GSMNetwork.pdf} +%\end{frame} + +\begin{frame}{GSM network interfaces} + \begin{description}[A-bis] + \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/core_net-odc2012/section-implementations.tex b/2012/core_net-odc2012/section-implementations.tex new file mode 100644 index 0000000..27d409d --- /dev/null +++ b/2012/core_net-odc2012/section-implementations.tex @@ -0,0 +1,153 @@ + +\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} + -- cgit v1.2.3