osmodevcon: welcome, SD-E1, retrospective

This commit is contained in:
Harald Welte 2018-04-11 21:52:49 +02:00
parent 0e89fdc9fd
commit 8fe4bb6805
8 changed files with 13426 additions and 0 deletions

View File

@ -0,0 +1,180 @@
Year 2017 Osmocom retrospective
===============================
:author: Harald Welte <laforge@gnumonks.org>
:copyright: 2018 by Harald Welte (License: CC-BY-SA)
:backend: slidy
:max-width: 45em
== 2017 - a year of change
Osmocom CNI (Cellular Network Infrastructure) has changed a lot:
* software changes
* team / developer changes
* sysmocom company focus changes
== 2017 - CNI Software changes
* OsmoBSC migration from SCCPlite to 3GPP AoIP
* OsmoMGW as integral part of both BSC and MSC
* NITB split into separate MSC, HLR, BSC
* 3G (IuCS, IuPS) goes mainline
== 2016/2017/2018 - Team changes
* Q1 2016: Jacob Erlbeck leaves sysmocom
** unfortunately a complete loss to Osmocom, particularly OsmoPCU
* 2017: Holger Freyther leaves sysmocom
** unfortunately also shift of focus away from Osmocom :(
** immense loss to the project in terms of skill and capacity
* Q1 2018: Max Suraev leaves sysmocom
** another loss of lots of Osmocom knowledge
== sysmocom changes
* we used to have to do lots of non-Osmocom work to cross-subsidize Osmocom
** big distraction of resources in 2014/2015, now gone
* we used to cross-subsidize Osmocom development by hardware sales
** not happening as much anymore
* we now work almost 100% on Osmocom
** R&D projects, support contracts and grants
== split NITB aftermath (the good parts)
* biggest architectural change since we started in 2008
* lots of good reasons and design improvements
** finite state machines with proper timeouts / clean-up
** proper 3GPP AoIP with interoperability tesing
** no synchronous HLR database access
** HLR access from OsmoMSC and OsmoSGSN
** 2G/3G authentication over GERAN and UTRAN
== split NITB aftermath (the bad parts)
[role="incremental"]
* never-ending list of breakage
** actual regressions of things that used to work before
** things that were _known omissions_ during the restructuring
* some commercial users stuck with SCCPlite and thus old @osmo-bsc-sccplite@
** almost none of the new features or bug fixes there
** no automatic testing
** back-ports time-consuming
== split NITB aftermath (lessons learned)
* overall complexity of Osomcoom cellular is quite stunning now
* absence of proper functional testing has caused massive fall-out
* the split architecture allows for betteer testing of smaller parts of the system
* my personal main focus of the last 5+ months:
[role="incremental"]
** testing, testing, testing, testing
** testing, testing, testing, testing
** some more testing
** even more testing
== Osmocom CNI testing (1/2)
[role="incremental"]
* unit test (autotest, like we always had)
** test individual functions / APIs of libraries / programs
** executed during "make check" and hence before any patch can get merged
* automatized functional tests in TTCN-3
** test _external_ visible behavior on interfaces such as Abis, A, GSUP, GTP, MNCC, PCUIF, CTRL, VTY, ...
** executed nightly by Jenkins (could be more frequently)
== Osmocom CNI testing (2/2)
[role="incremental"]
* osmo-gsm-tester
** tests entire Osmoocom network with BTS/BSC/MSC/HLR/PCU/SGSN/GGSN/...
** uses real BTS + MS hardware (over coaxial cable)
** automatic execution multiple times per day
* interop tests
** against NG40 RAN + CN simulator from NG4% (A / Gb / Iu level)
** not fully automatized yet
== Osmocom project health (CNI)
[role="incremental"]
* lots of funded developments, *but*
** primarily _enterprise features_ required by professional users
* dominance of sysmocom is problematic
** sustainable FOSS has no single point of failure!
* we need more contributions from third parties
** particularly those that benefit commercially from Osmocom
== Osmocom project health (other projects)
[role="incremental"]
* OsmocomTETRA dead since 2012, occasional small fixes
* No OsmocomBB ports to other PHY/chip yet
* OsmocomDECT completely dead
* Erlang core network projects dead
* Smalltalk projects dead (AFAICT)
* SIMtrace dead for years, about to be resurrected
== Osmocom project health (other projects)
[role="incremental"]
* gr-osmosdr very low commit ratio
* rtl-sdr no commits in 2015-2017
* but it's not that bad... (see next slide)
== Osmocom project health (other projects)
[role="incremental"]
* gr-gsm, fake_trx and trxcon a welcome change in OsmocomBB
* osmocom-analog (jolly to the rescue)
* osmo-fl2k (soon! now! this year!)
== Osmocom status (CNI)
[role="incremental"]
* CS RAN (BTS, BSC) is quite strong/complete these days
** ready to be used with 3rd party CN
* PS RAN (PCU) suffers from lack of attention
** lack of automatic testsuite with decent coverage
** lack of uplink multi-slot any many EGPRS features
* CS CN (MSC, HLR)
** in halthy state, but lack of TCAP/MAP interface limits us to non-roaming networks
* PS CN (SGSN, GGSN)
** in good health, now with IPv6 supoprt and kernel GTP acceleration
== Osmocom outlook (CNI)
* 2G still in demand by lots of use cases (rural, maritime, ...)
** if we had TCAP/MAP interface, many more deployments possible
* 3G has some users but lack of FOSS RNC limits us to femtocells
* 4G is deployed in parallel to 2G in many scenarios
** Osmocom 2G stack needs 2G-4G integration (SGs, DIAMETER)
** Osmocom needs to contribute to FOSS 4G projects (nextepc, srsLTE)
* irony: Now that it's possible to do properly funded Osmocom development, we have less people involved than in the early days :(
If we don't manage to focus on 4G soon, interest in 2G will diminish soon
== Osmocom outlook (other projects)
[role="incremental"]
* activity of original/traditional Osmocom developers decreased
* without attracting more developers, a lot of projects will remain dormant and/or never realize their potential
* I'd love to work on TETRA, DMR or other mobile communications technology
** but lack of developers and contributors even for 2G makes me stuck in 2G CNI land :(
== Personal Request
[role="incremental"]
* Osmocom needs you!
* we've lost too many friends already
* please don't leave Osmocom; please don't leave me
== Further Reading
See my detailed 2017 review:
* http://osmocom.org/news/84
== EOF
End of File

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,163 @@
Software Defined E1
===================
:author: Harald Welte <laforge@gnumonks.org>
:copyright: 2018 by Harald Welte (License: CC-BY-SA)
:backend: slidy
:max-width: 45em
== E1 / T1 / TDM
* good old ISDN technology
* 2 Mbits/s (E1) or 1.54 Mbits/s (T1) synchronous, full-duplex
* not used much anymore in telephony (everything moves to SIP/IP)
* still used quite a bit in 2G/3G cellular networks, even in 2018!
== E1/T1/TDM in 2G/3G networks
traditionally all interfaces over E1/T1
* Abis (RSL/OML over LAPDm) from BTS to BSC
* A (BSSAP/SCCP/MTP) from BSC to MSC
* ISUP/MTP for calls between MSCs and from/to PSTN
* MAP/TCAP/SCCP/MTP between MSC/VLR, SGSN, HLR, GW-MSC, IW-MSC, ...
* Gb (BSSGP/NS/FR) betewen PCU and SGSN
* Iub (Inverse ATM multiplex) over 4xE1 to RNC
== E1/T1/TDM in 2G/3G networks today: Abis
* TDM based Abis on decline
** back-haul networks increasingly switch TDM to IP as 4G is co-located with 2G
** but: Lots of BTSs still have physical E1
** Equipment like Ericsson SIU used to convert E1 to IP (proprietary protocols)
** TDM link remains between BTS and SIU-style converter
== E1/T1/TDM in 2G/3G networks today: A
* TDM based A on the decline
** 3GPP has an official interoperable protocol: AoIP
** adopted by many more modern MSCs
** OsmoBSC supports 3GPP AoIP (yay!)
== E1/T1/TDM in 2G/3G networks today: Core
* TDM based core network connections still prevalent
** lots of legacy switches (MSCs) and STPs around
** signaling interconnect among MNOs and MVNOs often still TDM
** full MAP+CAP over TCAP/SCCP/MTP stack required
== E1/T1/TDM interfacing from Linux / Osmocom
* we've had E1/T1 based Abis for ages
* **libosmo-abis** supports mISDN + DAHDI drivers
** PCI + PCIe cards readily available
** still extremely expensive (OK in CN, not next to each BTS)
** PCI cards of course require a rather large (ATX, ITX, ...) computer
[graphviz]
----
digraph G {
rankdir = LR;
XFMR [label="Magnetics"];
BTS -> XFMR [label="E1"];
subgraph cluster_A {
label = "Classic E1/T1 Adapter (PCI/PCIe)";
XFMR -> LIU [label="E1 (HDB3)"];
LIU -> TDMCTRL;
TDMCTRL -> Bridge [label="Parallel Bus"];
}
Bridge -> CPU [label="PCI / PCIe"];
}
----
* TDMCTRL implements equalizer, elastic buffer, CRC, framing, HDLC, ...
== Osmocom E1/T1/TDM interfacing use-case
* many E1/T1 based BTSs decommissioned around the world
* refurbished traders have quantities in stock for *very* low price
* using those BTSs with OsmoBSC + friends is an inexpensive way of
** deploying carrier-grade tier-1 BTS equipment
** with excellent environmental, RF sensitiviy, RF power and high MTBF
** for very low cost
* but: The E1/T1 card + associated PC are more expensive than your BTS :(
== E1/T1/TDM interfacing wishlist
* in 2018, you just want a very small E1/USB or E1/Ethernet adapter
* can be used with laptop when on the road, debugging something
* can be used with Raspberry Pi, Beaglebone or whatever other mall, inexpensive embedded Linux board
* you want to pay a realistic price, not some fantasy price (Digium & co)
== Building an E1/T1 adapter
Ok, so let's build an E1 adapter using existing chips...
* existing E1/T1 controllers
** many (including Infineon) already EOL due to the demise of ISDN
** have arcane bus interfaces (parallel Intel/Motorola bus like 1980)
** are ridiculously expensive
** come in very large acane packages
== The SD-TDM Plan [tm]
The road to software-defined E1:
* Simply use a LIU (Line Interface Unit) + Magnetics
** this converts the HDB3 ternary signal to a serial bit-stream
* serialize/deserialize that stream from a microcontroller
* do everything else in software, including framing, CRC4, ...
[graphviz]
----
digraph G {
rankdir = LR;
XFMR [label="Magnetics"];
BTS -> XFMR [label="E1"];
subgraph cluster_A {
label = "Software Defined E1 Adapter";
XFMR -> LIU [label="E1 (HDB3)"];
LIU -> uC [label="E1 (Serial Bits)"];
}
uC -> Linux [label="Buffers of bits over\nUSB or Ethernet"];
}
----
== Hardware Option A: TI PRU
* TI processors like the AM335x on the Beagleboard have PRU cores
** PRU: _Programmable Realtime Unit_
* PRU allows high-speed "real time" bit banging
* PRU can serialize/deserialize and provide buffers to ARM core with Linux
* E1 adapter could be a beaglebone cape
* Beaglebone could actually run entire OsmoBSC + OsmoMGW, too, using 3gPP AoIP over back-haul
== Hardware Option B: XMOS
* XMOS has a very unusual microcontroller architecture
* RISC CPU core @ 500 MHz with programmable serdes
** except USB + Ethenet, no other hard peripherals
** all peripherals (including I2C, SPI, ..) implemented in software!
** could be a simple / small E1/T1 to USB or to Ethernet converter
== Hardware Option C: Programmable Logic
* Using FPGA or CPLD one can of course synthesize a E1 core
* but that's not really _software defined_ anymore
* toolchain trouble (except yosys/arachne/ice40)
* just seems like overkill for a slow 2 Mbits/s signal
== Further Reading
* http://osmocom.org/projects/e1-t1-adapter
** http://osmocom.org/issues/2484
* XMOS
** https://www.xmos.com/download/private/Introduction-to-XS1-ports%281.0%29.pdf
** https://www.xmos.com/download/private/XMOS-Programming-Guide-%28documentation%29%28E%29.pdf
* TI PRU
** http://processors.wiki.ti.com/index.php/Programmable_Realtime_Unit_Subsystem
** http://processors.wiki.ti.com/images/1/18/PRUSS_Training_Slides.pdf
== EOF
End of File

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -0,0 +1,85 @@
Welcome to OsmoDevCon 2018
==========================
:author: Harald Welte <laforge@gnumonks.org>
:copyright: 2018 by Harald Welte (License: CC-BY-SA)
:backend: slidy
:max-width: 45em
== Welcome
* 2018 marks the 7th incarnation of OsmoDevCon
* Great to see all of you (again)
* Great to see some new faces, too!
== OsmoDevCon
[role="incremental"]
* by developers for developers
* as technical as it gets
* at least as much about the people involved than the topics
* feel free to present things beyond classic Osmocom
* any reasonably advanced technical topic is welcome
* ... as far as time permits
== Venue
* Three rooms that we can use
** main room
** the _rear room_ (this year with table)
** the _PC room_ in the back
* two washrooms/toilets
** use load-balancing algorithm
* basement kitchen
** we'll put up foot catering there
== Beverages / Coffee / Tea
Help yourself with:
* our own [filter] coffee + milk to use with the existing machine
* tea making facilities
* variety of beverages in the fridce
** please keep a tally of how many bottles you consume
** make sure to settle the total amount before you leave!
* snacks (sweets) available on top of fridge
** same rules as for beverages
* cookies spread out on the meeting table(s)
== Internet Access
* WiFi login / password marked on inner side of door
* Ethernet switches available around venue, just plug in + DHCP
** don't cause Ethernet loops (no STP!)
== Important Rules
* *DO NOT USE THE TAP (water) OR DISHWASHER IN THE BASEMENT*
** you will cause a flooding if you do it anyway
** instead, use dishwasher in the bathroom at the far back of the venue
* be excellent to each other
== Changes from 2017
criticism from last year:
* need more time for hacking / chat
* one day less was not such a good idea (so back to 4 days)
* let's try to make use of the _rear room_ for hacking
* we have pretalx and a real schedule!
* we have video recordings
== Sponsoring / Thanks
* Lunch sponsored by sysmocom
* Dinner sponsored by sysmocom
* venue + internet provided by IN-Berlin e.V.
* video recording by c3voc
* presentations by our amazing Osmocom community
* guest presentations by
** Sukchan Lee (nextepc)
** B. Jovanovic and D. Webster (LimeSDR adaptive digital predistortion)
* 10x LimeSDR mini donated by Lime Microsystems
== EOF
End of File

File diff suppressed because it is too large Load Diff