From f24009998c02732aab2471d38656597bf28b7126 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Mon, 26 Aug 2019 19:42:13 +0200 Subject: slides from cccamp2019 about 'how the camp LTE works' --- .../how_the_camp_lte_works.adoc | 131 +++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 2019/cccamp2019-how_camp_lte_works/how_the_camp_lte_works.adoc (limited to '2019/cccamp2019-how_camp_lte_works/how_the_camp_lte_works.adoc') 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 +: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 -- cgit v1.2.3