summaryrefslogtreecommitdiff
path: root/2019/cccamp2019-how_camp_lte_works/how_the_camp_lte_works.adoc
diff options
context:
space:
mode:
Diffstat (limited to '2019/cccamp2019-how_camp_lte_works/how_the_camp_lte_works.adoc')
-rw-r--r--2019/cccamp2019-how_camp_lte_works/how_the_camp_lte_works.adoc131
1 files changed, 131 insertions, 0 deletions
diff --git a/2019/cccamp2019-how_camp_lte_works/how_the_camp_lte_works.adoc b/2019/cccamp2019-how_camp_lte_works/how_the_camp_lte_works.adoc
new file mode 100644
index 0000000..faae09b
--- /dev/null
+++ b/2019/cccamp2019-how_camp_lte_works/how_the_camp_lte_works.adoc
@@ -0,0 +1,131 @@
+How the CCC Camp 2019 LTE network works
+=======================================
+:author: Harald Welte <laforge@gnumonks.org>
+:copyright: 2019 by Harald Welte (License: CC-BY-SA)
+:backend: slidy
+:max-width: 45em
+
+== Intro
+
+* we had GSM networks at CCC events since 2008
+** Initially using proprietary, E1-attached Siemens BTS and OpenBSC (later OsmoBSC)
+* we had GSM networks at European Hacker Camps since 2009 (HAR)
+* we had UMTS (3G) for a few years now, too
+** using Osmocom stack with OsmoHNBGW / OsmoMSC / OsmoSGSN
+
+== LTE
+
+* new network elements with new acronyms
+
+[graphviz]
+----
+digraph {
+ rankdir = LR;
+ eNB -> MME [label="S1AP"];
+ MME -> HSS [label="DIAMETER"];
+ MME -> SGW [label="GTPv2C"];
+ SGW -> PGW [label="GTPv2C"];
+ PGW -> PCRF [label="DIAMETER"];
+ eNB -> SGW [label="GTP-U"];
+ SGW -> PGW [label="GTP-U"];
+
+ { rank = same; HSS; PCRF; }
+}
+----
+
+== LTE
+
+* new protocols on all layers of all interfaces
+** S1AP between eNodeB and MME
+** GTPv2C between MME and SGW and SGW and PGW
+** DIAMETER between everyone and HSS
+
+== FOSS LTE software
+
+* srsLTE for eNodeB and UE
+** main focus on UE; eNodeB features somewhat limited
+** super simplistic srsEPC suitable for only the scarcest of use cases
+* OpenAirInterface
+** obscure code base; difficult to build; "
+** very research oriented
+** RAN part under non-free, non-opensource but 'source available' license
+* nextepc
+
+== nextepc
+
+* Implements all key LTE network (EPC) elements
+** MME
+** SGW
+** PGW
+** HSS
+** PCRF
+
+== interfacing with Osmocom 2G/3G core
+
+* shared subscriber (and key) database
+** LTE: HSS, speaking DIAMETER
+** 2G/3G: HLR, speaking MAP (Osmocom:GSUP)
+* We need a so-called 'inter-working function (IWF)
+** translate from DIAMETER to GSUP and vice-versa
+
+== osmo_dia2gsup
+
+* Best FOSS DIAMETER support contained in Erlang/OTP
+* Fairwaves contributed GSUP protocol codec in Erlang
+* I wrote a translator for the two minimal procedures
+** AuthInfo (Obtain authentication tuples)
+** UpdateLocation (registration)
+
+== Network layout
+
+[graphviz]
+----
+digraph G {
+ rankdir = LR;
+
+ { rank = same; eNB0; eNB1; eNB2; eNB3; eNB4; eNB5 };
+
+ eNB0 -> eNB1 [label="X2"];
+ eNB1 -> eNB2 [label="X2"];
+ eNB2 -> eNB3 [label="X2"];
+ eNB3 -> eNB4 [label="X2"];
+ eNB4 -> eNB5 [label="X2"];
+
+ eNB0 [label="eNB (RBS6402)"];
+ eNB1 [label="eNB (RBS6402)"];
+ eNB2 [label="eNB (RBS6402)"];
+ eNB3 [label="eNB (RBS6402)"];
+ eNB4 [label="eNB (RBS6402)"];
+ eNB5 [label="eNB (RBS6402)"];
+
+ { rank = same; MME; SGW; };
+
+ MME [label="MME (nextepc)"];
+ SGW [label="SGW (nextepc)"];
+
+ eNB0 -> MME [label="S1AP"];
+ eNB1 -> MME [label="S1AP"];
+ eNB2 -> MME [label="S1AP"];
+ eNB3 -> MME [label="S1AP"];
+ eNB4 -> MME [label="S1AP"];
+ eNB5 -> MME [label="S1AP"];
+
+ MME -> dia2gsup [label="DIAMETER"];
+
+ eNB0 -> SGW [label="GTP1U"];
+ eNB1 -> SGW [label="GTP1U"];
+ eNB2 -> SGW [label="GTP1U"];
+ eNB3 -> SGW [label="GTP1U"];
+ eNB4 -> SGW [label="GTP1U"];
+ eNB5 -> SGW [label="GTP1U"];
+
+ SGW -> PGW [label="GTP1U"];
+ SGW -> PGW [label="GTPv2C"];
+
+ dia2gsup -> OsmoHLR [label="GSUP"];
+}
+----
+
+== EOF
+
+End of File
personal git repositories of Harald Welte. Your mileage may vary