Accelerate3g5 -- benoit » History » Revision 8
Revision 7 (benoit, 10/06/2017 10:00 PM) → Revision 8/11 (benoit, 02/13/2018 09:12 PM)
h1. Accelerate3g5 -- benoit h2. Who Benoit Michau, email contact: michau[dot]benoit[at]gmail[dot]com h2. What Provide a 3G and 4G core network entirely written in Python, mainly for testing handsets easily and smoothly. h2. How The A 4G core network part has already been developed, based on an old library (libmich). It is responsible for handling home-NodeBs (ip.access femtocells) through available here: https://github.com/mitshell/corenet/. 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 The intention is to develop 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 clean API, a wider Python support all NAS signalling messages. All required RAN (both 2.7 and NAS stacks 3.4+), a complete ASN.1 compiler and procedures have been implemented in the pycrate_corenet subdirectory, plus a main signalling server, a GTP-U server, runtime, and an SMS forwarder. the additional protocol handlers for RUA / RANAP and 2G-3G NAS. h2. Where The new framework is available here: https://github.com/ANSSI-FR/pycrate. A wiki has been initiated It currently proposes: - a complete ASN.1 compiler and is growing progessively: https://github.com/anssi-fr/pycrate/wiki. runtime (with BER/CER/DER/(U)PER encoders and decoders) The CryptoMobile library has been updated with CPython wrappers instead - a large set of ctypes Python wrappers ASN.1 libraries, ready to be used around 3G - a CSN.1 translater and 4G cryptographic algorithms: https://github.com/mitshell/CryptoMobile. runtime for encoding and decoding The Corenet application has been updated - 24.008 MM, GMM and IE encoders and decoders - A signaling server to use this new framework: https://github.com/mitshell/corenet. handle Iuh interface h2. Final Some results (february 2018) (october 2017) The corenet application can handle pycrate_corenet subdirectory has a server handling connections from HNB over IuH. It supports connecting / disconnecting femtocells and UE with HNBAP. It supports RUA to transport RANAP transactions for both home-NodeBs CS and eNodeBs correctly, PS domains. It supports enough of RANAP to have the attachment and connecting handsets in 3G mobility of UE through the femtocells. It supports mobility procedures from the TS 24.008 for both the CS and 4G. PS domains. As a result, it is possible to connect UEs to the signaling server, through femtocells: The application can provide data connectivity through APNs, - CS procedures supported: location update, IMSI detach, paging and forward SMS. all MM common procedures No voice call service is supported, neither USSD applications. - PS procedures supported: attach, routing area update, detach, paging and all GMM common procedures A wiki has been started here: https://github.com/anssi-fr/pycrate/wiki Basic information on how to configure and run the server will follow soon. h2. 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.