slides from cccamp2019 about 'how the camp LTE works'

This commit is contained in:
Harald Welte 2019-08-26 19:42:13 +02:00
parent 9c21188a59
commit f24009998c
4 changed files with 4230 additions and 0 deletions

View File

@ -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

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB