Accelerate3g5 -- benoit


Benoit Michau, email contact: michau[dot]benoit[at]gmail[dot]com


Provide a 3G and 4G core network entirely written in Python, mainly for testing handsets easily and smoothly.


The core network part is responsible for handling home-NodeBs (ip.access femtocells) through
their Iuh interface, and eNodeBs (amarisoft, OAI, ...) through their S1 interface.
Handsets are handled through their NAS connections in the CS, PS and EPS domains, transported
over RANAP/RUA (for the Iuh interface) and S1AP (for the S1 interface).

A new framework named pycrate has been developped for this purpose.
It contains an ASN.1 compiler with PER and BER encoders, a translater for CSN.1 structures,
and support all NAS signalling messages. All required RAN and NAS stacks and procedures have been
implemented in the pycrate_corenet subdirectory, plus a main signalling server, a GTP-U server,
and an SMS forwarder.


The new framework is available here:
A wiki has been initiated and is growing progessively:
The CryptoMobile library has been updated with CPython wrappers instead of ctypes Python wrappers
around 3G and 4G cryptographic algorithms:
The Corenet application has been updated to use this new framework:

Final results (february 2018)

The corenet application can handle both home-NodeBs and eNodeBs correctly,
and connecting handsets in 3G and 4G.
The application can provide data connectivity through APNs, and forward SMS.
No voice call service is supported, neither USSD applications.

Questions raised during the development

- How to configure a lower global Tx level in the femtocell statically ?
I have currently a temporary solution, which consists in using the web server of the femtocell
exposing some configuration parameters. For this, we need to replace the .htaccess file of the
web server. However, each time the Iuh interface restarts, the default Tx level is restored.

- Is there a way to broadcast information related to LTE neighbour cells ?
From the configuration parameters, it seems only 2G and 3G neighbour cells can be configured in
the system information messages.

- Is it possible to change the logging verbosity ?
I encountered some bugs during the development, and it would have been nice to get more
detailed logging and debugging information within the femtocell.